2

ファイルのダウンロードやアーカイブなどを支援するPythonユーティリティモジュールを開発しています。単体テストとともに仮想環境でプロジェクトをセットアップしています。このモジュールを同じコンピューター(基本的には「本番環境」)で使用する場合は、ファイルを〜/ dev / modules/ mymoduleのmymoduleディレクトリーに移動します。

すべてのサードパーティモジュールを〜/ dev / modules/ contribの下に保持します。この貢献パスは私のPYTHONPATHにありますが、mymoduleが私のPYTHONPATHにある場合ユニットテストで「開発」バージョンと「本番」バージョンを区別できないことに気付いたためではありません。ただし、この一般的なユーティリティモジュールを使用する場合は、手動でPYTHONPATHに追加する必要があります。

これは機能しますが、より優れた、より自動化された方法があると確信しています。

同じコンピューター上に開発モジュールと本番モジュールを配置するための最良の方法は何ですか?たとえば、PYTHONPATHを動的に設定する方法はありますか?

4

3 に答える 3

1

仮想環境とは、virtualenvパッケージのことだと思いますか?

http://pypi.python.org/pypi/virtualenv

私が試してみたいこと(そして質問を正しく理解していない場合はお詫びします)は次のとおりです。

  • PYTHONPATHによって参照されていない場所にソースを保持します(例:〜/ projects / myproject)
  • インストール用の簡単なsetuptoolsまたはdistutilsスクリプトを作成します( Python distutilsを参照してください-誰かがそれを使用する方法を知っていますか?
  • virtualenvパッケージを使用して、-no-site-packagesオプションを使用して開発仮想環境を作成します。これにより、「開発」バージョンでは、デフォルトのPythonインストールでインストールされたパッケージが表示されなくなります。
  • (また、PYTHONPATHにソースディレクトリがないことを確認してください)

次に、テスト用に:

  • 開発仮想環境をアクティブ化する
  • インストールスクリプトを実行します(通常はpython setup.py build installのようなものです)。パッケージは/path/to/dev_virtualenv/lib/python2.x/site-packages/になります
  • テスト、中断、修正、繰り返し

そして、生産のために:

  • devvirtualenvがアクティブ化されていないことを確認してください
  • インストールスクリプトを実行する
  • 「dev」バージョンは、本番環境では認識できない仮想環境に隠されています...
  • ...そして、PYTHONPATHを(直接)いじることはありません

そうは言っても、私は実際にvirtualenvを使って設定を試みたことがない人の自信を持ってこれを書いています。そして、私があなたの質問を漠然と理解したことを願っています...;)

于 2010-10-12T13:24:01.753 に答える
1

一部のサードパーティモジュールは現在のモジュールのディレクトリからのインポートに依存しているため、 Pythonパスをで追加/変更できますsys.path。最初のパスが現在のディレクトリであることを確認してください。"."

Pythonパスの詳細:http: //djangotricks.blogspot.com/2008/09/note-on-python-paths.html

于 2010-10-12T13:58:10.513 に答える
0

PYTHONPATHを本番コードを指すグローバル環境変数として設定し、開発コードを使用するシェルで、PYTHONPATHをそのコードを指すように変更できます。

(それは単純すぎますか?私は何かを逃しましたか?)

于 2010-10-12T11:54:44.180 に答える