3

私の現在のシステムでは、 などのすべてのディレクトリ.local/lib/python2.7/site-packagesはグローバル管理者の管理下にあり、ユーザー間で標準化されています。

ただし、できればセカンダリ サイト ディレクトリ内のファイルを使用するなど、管理しやすい方法で、起動時に PYTHONPATH に取り込まれる独自のディレクトリのコレクションを追加したいと考えています。.pth

Python がパス要素を検索する標準の場所を変更する必要なく、通常の Python チャネルを介してこれを達成する方法はありますか?

sitecustomize.pyPYTHONPATH にあるフォルダー内のようなファイルまたは任意の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
4

1 に答える 1