次のディレクトリ構造があるとします。
workspace/
__init__.py
ys_manage/
__init__.py
manage.py
ys_utils/
__init__.py
project_dicts.py
project_dicts.py
ここで、 in にアクセスする必要があるとしmanage.py
ます。また、私の$PATH
include /home/rico/workspace/ys_manage
.
manage.py
マシン上の任意のディレクトリから実行できる必要があり、アクセスできる必要がありますproject_dicts.py
。
私$PYTHONPATH
だけが持ってい/home/rico/workspace
ます。
以下を含めるとmanage.py
、ファイルを実行できますが、他の場所からは実行でき~/workspace/ys_manage
ません。
import sys
sys.path.append('..')
from ys_utils import project_dicts
は'..'
、ファイルが置かれている場所ではなく、ファイルが実行されているディレクトリへの相対パスを与えるようです。これは正しいです?
普遍的に利用できるように、ys_manage/__init__.py
インポートして使用したかったのです。これは良い考えですか?project_dicts.py
manage.py
__init__.py
「パッケージクリエーター」以外に使用したことはありません。つまり、初期化の目的で使用したことはありません。おそらく私はそれを間違っています。
の内容ys_manage/__init__.py
:
import sys
sys.path.append('..')
from ys_utils import project_dicts
manage.py
このインポートを探すために何かを含める必要がありますか?
実行しようとするmanage.py
と、次のエラーが表示されます。
NameError: global name 'project_dicts' is not defined
二次的な質問として、私は持っている必要がありworkspace/__init__.py
ますか? ys_manage
and ys_utils
(および他の約 12 個のパッケージ) はすべてリビジョン管理下にあり、他のいくつかの開発者によって使用されているため、私は本当にそれを持っていません...workspace
そうではありません。