25

私は最近、pythonで開発しているときにvirtualenvを使用しています。--no-site-packages オプションを使用した分離された開発環境のアイデアは気に入っていますが、PyGTK アプリの開発中にこれを行うのは少し難しい場合があります。PyGTK モジュールはデフォルトで Ubuntu にインストールされます。システムの別の場所にある特定のモジュールを仮想環境 (--no-site-packages を使用) に認識させたいと考えています。

これを行う最善の方法は何ですか?または、それを吸い上げて --no-site-packages オプションをドロップする必要がありますか?

4

5 に答える 5

34
$ virtualenv --no-site-packages --python=/usr/bin/python2.6 myvirtualenv
$ cd myvirtualenv
$ source bin/activate
$ cd lib/python2.6/
$ ln -s /usr/lib/pymodules/python2.6/gtk-2.0/ 
$ ln -s /usr/lib/pymodules/python2.6/pygtk.pth 
$ ln -s /usr/lib/pymodules/python2.6/pygtk.py 
$ ln -s /usr/lib/pymodules/python2.6/cairo/
$ python
>>> import pygtk
>>> import gtk
于 2009-11-03T22:20:07.110 に答える
5

1 つの方法は、sys.path を使用してコードにパスを追加することです。

import sys

sys.path.append(somepath)

もう 1 つの方法は、sys.path への追加に加えて .pth ファイルを処理する site を使用することです。

import site

site.addsitedir(sitedir, known_paths=None)

https://docs.python.org/library/site.html

しかし、関連するすべてのコードにこれを追加したくないでしょう。

このようなことを実行するために sitecustomize.py が使用されているという言及を見たことがありますが、いくつかのテストの後、期待どおりに動作させることができませんでした。

ここでは、sitecustomize.py の自動インポートが 2.5 で終了したことに言及しています。2.5 を使用していない場合は、試してみてください。(上記の path add メソッドの 1 つをファイルに追加し、プログラムが実行されているディレクトリにドロップするだけです) 2.5 以降のユーザー向けの投稿で、回避方法が言及されています。

http://code.activestate.com/recipes/552729/

于 2008-10-30T05:22:13.760 に答える
1

ここで postmkvirtualenv フック スクリプトを確認してください。

https://stackoverflow.com/a/9716100/60247

その場合、彼はそれを使用して、新しい Virtualenv が作成された後に PyQt と SIP をインポートしていますが、必要なパッケージを LIBS に追加できます。

そして、それは素晴らしいので、そのスクリプトに投票してください:)

于 2012-08-26T21:56:56.923 に答える
1

この状況では、シンボリックリンク、または特定のファイル (パッケージ、モジュール、拡張機能) のコピーでさえも非常にうまく機能します。

これにより、開発環境に合わせてアプリケーションを変更するのではなく、プログラムがターゲット環境で実行されることをエミュレートできます。

AppEngine のようなものについても同じです。

于 2008-10-30T09:57:08.963 に答える
0

関連するシステムの python gtk-2.0 へのリンクを virtualenv に含めたい場合は、pip を使用してruamel.venvgtkをインストールするだけです。

pip install ruamel.venvgtk 何もインポートしていません。リンクはインストール中に設定されます。

これは、 を使用している場合に特に便利です。toxその場合、依存関係 (tox 用) のみを含める必要があります。

deps:
    pytest
    ruamel.venvgtk

また、新しくセットアップされた python2.7 環境には、テストが実行される前に関連するリンクが含まれます。

リンクの設定方法の詳細については、この回答を参照してください。

于 2014-12-14T16:38:33.410 に答える