私の現在のシステムでは、 などのすべてのディレクトリ.local/lib/python2.7/site-packages
はグローバル管理者の管理下にあり、ユーザー間で標準化されています。
ただし、できればセカンダリ サイト ディレクトリ内のファイルを使用するなど、管理しやすい方法で、起動時に PYTHONPATH に取り込まれる独自のディレクトリのコレクションを追加したいと考えています。.pth
Python がパス要素を検索する標準の場所を変更する必要なく、通常の Python チャネルを介してこれを達成する方法はありますか?
sitecustomize.py
PYTHONPATH にあるフォルダー内のようなファイルまたは任意のusercustomize.py
場所にファイルを配置し、それらが自動的に実行されることを期待する方法があるかどうか、特に疑問に思っていますか? (そのようなファイルを のような管理ディレクトリ内に配置することでこの動作を取得するのではなくsite-packages
、これは避けたいことです。)
私の目標は、テキストファイルpaths.pth
をいくつかのディレクトリに配置し、そのディレクトリをファイルなど/home/my_configs/python_stuff/
を介して PYTHONPATH にのみ配置するだけです。次に、少なくとも、追加するパスを 1 つだけ手動で維持します。バージョン管理や、そのファイルの内容を変更することでロードされる内容をパラメーター化する方が簡単です。.bashrc
.pth
管理者の制限が設定されていない場合は、簡単にこれを行うことができますが、site-packages
それ以外で完全に機能するソリューションが必要です。
私はこれ/.bashrc
を持っています:
export PYTHONPATH=/home/ems/python_paths/:$PYTHONPATH
ディレクトリ/home/ems/python_paths/
には2つのファイルしかsitecustomize.py
ありpaths.pth
ません(ただし、そこにもファイルを追加しようとしました__init__.py
が、(予想どおり)役に立ちませんでした)。これら 2 つのファイルは次のようになります。
sitecustomize.py
import site
site.addsitedir("/home/ems/python_paths/")
パス.pth
/home/ems/ws/Research/Projects/python-util/src/util/
/home/ems/ws/Research/Projects/python-efficacy/src/efficacy/
の内容は、paths.pth
直接エクスポートされていたものとまったく同じで.bashrc
あり、たとえば、from util.DataManager import DataManager
トップレベルのインポートとして実行できます。
しかし、上記のさまざまなファイルを設定し、 inにコメントアウトしexports
、新しい端末を取得した後、次のように表示されます。PYTHONPATH
.bashrc
ems@computer ~ $ python
Enthought Python Distribution -- www.enthought.com
Version: 7.3-2 (64-bit)
Python 2.7.3 |EPD 7.3-2 (64-bit)| (default, Apr 11 2012, 17:52:16)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "credits", "demo" or "enthought" for more information.
Hello
>>> from util.DataManager import DataManager
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named util.DataManager