18

複数の個別のプロジェクト フォルダーからアクセスできる Python モジュールの "ライブラリ" を作成したいと考えています。

たとえば、/proj1/ と /proj2/ の Python スクリプトが /lib/ にアクセスできるようにします。

/lib/help.py
/lib/more_help.py

/proj1/script.py
/proj1/script2.py

/proj2/this_script.py
/proj2/another_script.py

これはかなり整理されていないように見えるため、すべての Python スクリプトを含む単一のディレクトリは必要ありません。また、同じ /lib/ スクリプトを異なるプロジェクトのそれぞれにコピーしたくはありません。

Pythonでこれを処理する理想的な方法は何ですか? Pythonのパスに追加されていますか? それとも、これはもっとハックですか?これには、ファイルの移植性が低下するという欠点があるようです。それとも、相対パスの使用に関するこの質問/回答ですか? または、他の何か?

私は Python 3.x ではなく Python 2.x に興味があることを付け加えておきます。

4

3 に答える 3

12

packageにlib/変換し、ディレクトリの 1 つに配置しますsys.path(または新しいエントリを追加します)。その後、たとえばプロジェクトにインポートできlib.helpます。

于 2012-08-12T05:53:48.610 に答える
3

誰もが通る標準的な道に従ってください: コードを適切な setup.py で適切な Python パッケージにします。利点は次のとおりです: easy_install'able、簡単に配布可能、コマンド ライン スクリプトの簡単な生成 (console_scripts エントリ ポイントを介して) など....

于 2012-08-12T06:14:56.433 に答える
2

プロジェクトの環境を管理するために使用できる最良のツールはvirtualenvだと思います。新しい仮想環境を作成し、そこにパッケージをインストールしてから、virtualenv が提供する python 実行可能ファイルを使用してプロジェクトを実行します。

おそらく、ライブラリでdistutilsを使用する必要があります。このように、virtualenvを使用してインストールするのは非常に簡単です.virtualenvはsetuptoolsをインストールするか、仮想環境に配布するため、pypiまたはローカルマシンから仮想環境パッケージにインストールできます。

仮想環境の作成後にいくつかのライブラリを自動的にインストールするカスタム ブートストラップ スクリプトを作成することもできます。

于 2012-08-12T10:23:46.527 に答える