2010-07-14 44 views
2

考慮下面的文件\目錄結構:Python - 如何PYTHONPATH與複雜的目錄結構?

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 
| | ... 

我應該如何使用sys.path.appendfoo.py,這樣我可以使用bar1.pybar2.py
導入將如何?

回答

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 
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