2012-07-06 2 views
0

는이 같은 디렉토리 구조가 있습니다파이썬 경로 무시 ​​

PYTHONPATHDIR 
    App1 
     someModule.py 
     utils.py 
    utils 
     hasClassIWantToImport.py 

을 그리고 someModule이 utils.hasClassIWantToImport에서 뭔가를 가져올. 내가 전화 할 때 : 그것은 내가 현재 디렉토리에 utils.py에 대해서 이야기하고 생각하기 때문에

from utils.hasClassIWantToImport import ClassIWant 

는 "hasClassIWantToImport"를 확인할 수 없습니다.

어떻게이 문제를 해결할 수 있습니까? 본인은 "유틸"중 하나의 이름을 바꿀 수있어 오히려 않을 것 ...

+2

다른 모듈/클래스에 동일한 이름을 지정하는 것은 좋지 않습니다. –

답변

1

다른 방법과 관련하여 그 중 하나를 참조하지 않고 PYTHONPATHDIR/utilsPYTHONPATHDIR/App1/utils.py에 대한 액세스를 동시에 유지 관리 할 수 ​​있습니다.

PYTHONPATHDIR이 목록의 머리에 있도록 경로를 수정하면 utils.hasClassIWantToImport을 가져올 수 있지만 utils.py에 액세스 할 수 없게됩니다. 당신이 할 수있는 최선의 소개

가로 __init__.py 파일을 배치하여 App1 패키지를 만들고 @Gryphius 제안처럼 경로로 찾으면이다 (즉 sys.path의 머리에 /path/to/utils을 넣어). 당신이 utils.hasClassIWantToImport에 액세스하려는 경우, 당신은

from utils.hasClassIWantToImport import ClassIWant 

utils.py에 상대적으로 파일을 가져 오려면 것은

from App1.utils import ClassIWantFromApp1 

그러나 이것은 단지 utils.py 이름을 변경하지 않도록 끔찍한 해킹입니다. 경로 조작의 장기적인 골칫거리를 저장하고 파일의 이름을 바꾸는 것이 좋습니다.

1

확실하지를 내가 제대로 디렉토리 설정을 이해 한 경우,하지만 당신은 시도 할 수 있습니다 : 어떤이 없습니다

import sys 
sys.path.insert(0,'/path/to/utils') 
from hasClassIwantToImport import ClassIWant