1


1

同じコンピューターで同じPythonを開発して使用する

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

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

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

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

3 回答


1


私はあなたがvirtualenvパッケージを意味する仮想環境で推測していますか?

私が試したいのは(そして質問を正しく理解していない場合は謝罪します):

  • PYTHONPATHによって参照されていない場所にソースを保持します(例: 〜/ projects / myproject)

  • インストール用のシンプルなsetuptoolsまたはdistutilsスクリプトを記述します( Python distutils-誰でも使用方法を知っていますか?

  • virtualenvパッケージを使用して、dev仮想環境を作成します。 --no-site-packagesオプション-この方法では、「dev」バージョンでは、デフォルトのPythonインストールでインストールされたパッケージが表示されません。

  • (PYTHONPATHにソースが含まれていないことも確認してください ディレクトリ)

次に、テストのために:

  • Dev仮想環境をアクティブ化する

  • インストールスクリプトを実行します(通常、python setup.py buildのようなもの) インストール)。 パッケージは/path/to/dev_virtualenv/lib/python2.x/site-packages/になります

  • テスト、ブレーク、修正、繰り返し

そして、生産のため:

  • dev virtualenvがアクティブになっていないことを確認してください

  • インストールスクリプトを実行する

  • 「dev」バージョンは仮想環境に隠されています 生産が見ることができない環境…​

  • …​そして、PYTHONPATHをいじることはありません(直接)

とは言っても、実際に怒りの中でvirtualenvを使用して設定しようとしたことのない人の自信と、あなたの質問を漠然と理解した希望でこれを書きます…​ ;)


1


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

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


0


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

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