2015-01-13 2 views
0

나는 다음과 같은 디렉토리 구조가 있습니다파이썬은 내 패키지를 가져올 수 없습니다

myapp 
├── a 
│   ├── amodule.py 
│   └── __init__.py 
├── b 
│   ├── bmodule.py 
│   ├── __init__.py 
└── __init__.py 

a/amodule.py에서을 내가 가지고 b/bmodule.py

from myapp.b import bmodule 

b.myfunc() 

에서 간단한 함수를 호출하지만이 조각 나는 python a/amodule.py을 실행할 때 이 오류가 발생합니다 :

File "a/amodule.py", line 1, in <module> 
    from myapp.b import bmodule 
ImportError: No module named 'myapp' 

내가 뭘 잘못 했니?

+0

에서 실행되는 경우의 수입 모듈을 찾기 위해 기본 장소로 Code 폴더를 취급 시스템 파이썬에 로그인 할 때마다 토륨은이이 실행되고 2.x 또는 3.x? 이전 버전 인 경우'__future__ import absolute_import'에서 수행 했습니까? – Kevin

+0

'myapp'가 필요하지 않습니다.'from b.bmodule import myfunc()'를 시도하십시오. – Maroun

+0

@MarounMaroun : 3.x (및 절대 가져 오기를 사용하는 경우 2.x)에 대한 잘못된 해결책입니다. – Kevin

답변

1

당신은

당신은 PYTHONPATH 환경 변수

을 설정할 수 있습니다 또는

를 가져 오기 전에 sys.path을 변경할 수 있습니다 또는 pycharm 같은 IDE를 사용하여 파이썬 경로에 프로젝트 루트를 넣을 필요가있는 너를 위해 이런 종류의 일을 할 것이다.

(아마 from b import blah 일 것이다)

은 (파이썬 3에서 당신은 또한 상대적으로 수입 할 수있는 ... 나는의 큰 팬이 아니다하지만 ...뿐만 아니라

순환 수입에 대한 조심이 문제를 해결할 수있는 가능성이있는 다른 방법이있다

from ..b import blah 

가장 좋은 방법은

from myapp.b import whatever 

항상 부모 PA를 추가 할 .bashrc 파일을 편집하는 것입니다 수 있도록하려면이 기능) 이제 PYTHONPATH

export PYTHONPATH=$PYTHONPATH;/home/lee/Code 

에 관계없이 파일을

+1

'sys.path'를 부주의하게 사용하는 것을 권장하지 않습니다. 'myapp' 디렉토리와 같은 레벨에 최상위 스크립트를 설치하거나 파이썬이 기본적으로 검색하는 디렉토리에 패키지를 설치하거나'PYTHONPATH'를 사용하십시오. 이것은 환경 설정이며 파이썬 코드 외부에서 처리되어야합니다. –

+0

나는 그것의 이상적인 해결책에 동의하지 않는다 ...하지만 문제를 해결할 수있는 해결책입니다 (프로젝트 구조 문제 나 코드 문제가 아닌 환경 문제에 동의합니다) –

+0

python 경로를'''/ home/lee/Code/myapp ' ''그리고 나는 여전히 같은 오류가 발생합니다. – Lee

관련 문제