2009-03-30 8 views
5

私は兄弟ディレクトリにプロジェクトxとyがあるとしましょう:projects/xとprojects/y。
myutils.pyの両方のプロジェクトとmydbstuff.pyのいくつかのdb stuffに共通するユーティリティ機能がいくつかあります。
これらはマイナーな共通点です。そのため、単一のパッケージを作成したくありません。複数のプロジェクトで共通のファイルを共有するためのpythonic方法は何ですか?

質問には、このようなファイルを使用するには、「神託の方法」です何

など、このようなファイルの所在についてPYTHONPATH、インポートする適切な方法への可能な変化を生じ?

答えて

9

pythonicの方法は、それらのための単一の余分なパッケージを作成することです。

パッケージを作成しないのはなぜですか?両方のプロジェクトでこのパッケージを配布することができ、その効果は同じになります。

PYTHONPATHとカスタムインポートを使用してマガジンを作成すると、すべてのインスタレーションシナリオとプラットフォームで正しいことはありません。

別のパッケージを作成してすぐに完了してください。

+0

+1:sys.pathを動的に変更しないでください。パッケージまたは外部PYTHONPATH設定を使用します。 –

1

共有ファイルへのパスをsys.pathに直接追加することもできます。sys.path.append(pathToShared)で直接入力するか、.pthファイルを定義してsite.addsitedirに追加します。パスファイル(.pth)は、各行にパスを持つ単純なテキストファイルです。

0

私は 'パッケージを作成する' に同意します。

これができない場合は、シンボリックリンク/ジャンクション(Linuxではln -s、Windowsではlinkd)を使用してください。

0

これにはsetuptoolsをお勧めします。依存関係を設定することで、パッケージをインストールする前にこれらのパッケージ/個々のモジュールがすべてsys.path上にあることを確認することができます。単一のソースファイルだけをインストールしたい場合は、自動的に簡単なsetup.pyを生成することができます。これは、パッケージルートを使用しない場合に便利です。

これを複数のコンピュータに展開する予定がある場合は、通常は私が使用する予定のすべての依存関係を持つWebサーバーをセットアップして自動的にインストールできます。

私はまた、paverについての良いことを聞いたことがありますが、それは自分では使用していません。

関連する問題