2010-07-14 6 views
2

은 다음 파일 \ 디렉토리 구조를 고려 : 어떻게 내가 bar1.pybar2.py을 사용할 수 있도록 foo.pysys.path.append를 사용해야합니다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 
| | ... 

?
수입 방법은입니까?

답변

2

상대 경로을 사용하면 이식성 측면에서 훨씬 더 바람직합니다.

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 
: 당신의 foo.py 스크립트의 상단에

다음과 같은 추가
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으로 전화하십시오.

관련 문제