2014-10-01 1 views
1

this SO answer의 지침에 따라 하위 패키지로 서브 패키지로 된 파이썬 패키지를 만들었습니다. 서브 폴더는 각각 __init__.py 파일입니다 (모두 완전히 비어 있음).).ImportError : 자체 하위 패키지를 가져올 때 ''라는 모듈이 없습니다.

top_module 
    __init__.py 
    module_a.py 
     sub_module 
      __init__.py 
      module_c.py 

는 내가 최고 수준의 모듈을 수입하지만, ImportError에 서브 모듈의 결과를 가져 오려고 할 수 있습니다

>>> import top_module 
>>> import top_module.sub_module 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named sub_module 

iPython에서 나는 나에게 module_a.py하지만 sub_module을 보여 top_model.을 자동으로 완성 할 수 있습니다.

this SO answer의 지침을 이어 난 그냥 얻을 :

>>> top_module.__file__ 
'top_module.pyc' 

정말 유용하지 않다. 흥미롭게도, __package__ 나를 제공 :

>>> print top_module.__package__ 
None 

내가이 작업을 수행 할 수 있습니다

>>> import top_module 
>>> import sub_module.module_c 

그래서 왜 안 import top_module.sub_module.module_c를?

+0

이 명령을 실행할 때 어떤 디렉토리에 있습니까? –

+0

좋은 질문입니다. 나는 명령 행에서, top_module 디렉토리에서 또는 b) Spyder에서 top_module 디렉토리가있는 IDE의 "PYTHONPATH manager"도구에 추가되었다. – LondonRob

답변

2

시도 (그리고 난 두려워 꽤 바보 같은 오류입니다.) 나는 내 PYTHONPATH이

/path/to/top_module 

및 설정했다

하고 있었다

import module_a 

당연히 효과가 있었다. 그러나 PYTHONPATH에 대한 top_module "을 알고"하지 않았기 때문에

import top_module.submodule 

작동하지 않았다 일을하려고, 그것은top_module 이미 했다.

1

나는 내 문제가 무엇인지 알아 근무했습니다 from sub_module.module_c import *

+0

그게 효과가있다. 도대체 무슨 일이야? 'import top_module.sub_module'을 할 수 없어야합니까? – LondonRob

+0

@ LondonRob 나는 너를 할 수있을 것 같아. 파이썬의 임포트 시스템은 항상 내게 서투른 것처럼 보였다. – Undo

+0

Thanks @Undo. 나는이 새로운 정보를 반영하기 위해 나의 질문을 조정했다. – LondonRob

관련 문제