2

次のファイル\ディレクトリ構造を検討してください。

project\
|  django_project\
|  |  __init__.py
|  |  django_app1\
|  |  |  __init__.py
|  |  |  utils\
|  |  |  |  __init__.py
|  |  |  |  bar1.py
|  |  |  |  ...
|  |  |  ...
|  |  django_app2\
|  |  |  __init__.py
|  |  |  bar2.py
|  |  |  ...
|  |  ...
|  scripts\
|  |  __init__.py
|  |  foo.py
|  |  ...

bar1.pybar2.pyを使用できるようにするには、 foo.pysys.path.appendをどのように使用すればよいですか? インポート はどのようになりますか?

4

2 に答える 2

2

移植性の理由から、相対パスを使用する方がはるかに望ましいでしょう。

スクリプトの先頭にfoo.py次を追加します。

import os, sys
PROJECT_ROOT = os.path.join(os.path.realpath(os.path.dirname(__file__)), os.pardir)
sys.path.append(PROJECT_ROOT)

# Now you can import from the django_project package
from django_project.django_app1.utils import bar1
from django_project.django_app2 import bar2
于 2010-07-14T18:15:15.960 に答える
1
import sys
sys.path.append('/absolute/whatever/project/django_project/django_app1')
sys.path.append('/absolute/whatever/project/django_project/django_app2')

パスに両方を含めるかどうかを評価する必要がありますが、両方に競合するモジュール名がある場合に備えて。django_project必要なときに必要なときに呼び出しdjango_app1/bar1.pyて、必要なときにだけ呼び出すことが理にかなっているimport django_app2.bar2.whatever場合があります。

于 2010-07-14T18:08:33.373 に答える