2017-03-11 5 views
0

다음과 같이 pytestlib 패키지와 모듈을 가지고 있습니다 : test.py는 단순히 module2를 작성하고 module2는 module1을 가져옵니다. test.py 코드가 컴파일 된 상태에서 예상대로 작동하고 자체 폴더에서 직접 실행됩니다.패키지로 사용하는 경우 ImportError. 패키지는 자체 모듈을 가져올 수 없습니다

pyteslib\ 
    - __init__.py 
    - module1.py 
    - module2.py 
    - test.py 

module1.py

class Module1Class(): 
def __init__(self): 
    self.msg ="This message is from Module1Class" 

module2.py

from module1 import Module1Class 

class Module2Class(): 
    def __init__(self): 
     module1_obj = Module1Class() 
     print(module1_obj.msg) 

test.py 그러나

from module2 import Module2Class 

module2_obj = Module2Class() 

; 이 패키지를 만들고 다른 프로젝트에서 가져 오면 ImportModule 오류가 발생합니다. 한마디로

Traceback (most recent call last): 
    File "X:/SDK/python/testimp/imp.py", line 3, in <module> 
    from pytestlib.module2 import Module2Class 
    File "C:\Program Files (x86)\Python35-32\lib\site-packages\pytestlib\module2.py", line 1, in <module> 
    from module1 import Module1Class 
ImportError: No module named 'module1' 

, 패키지를 한 후, 모듈 1에 의해 찾을 수 없습니다 : (다른 프로젝트에서)

externaltest.py는

수입 SYS

from pytestlib.module1 import Module1Class # No error importing module1 
# from pytestlib.module2 import Module2Class # I have error if import module2 


module1_obj = Module1Class() 
# module2_obj = Module2Class() # I have error 

이 오류가 패키지의 module2.py. 그러나 보시다시피 모듈 1은 externaltest.py에 의해 직접 가져올 수 있습니다. 패키지가 자체 모듈을 가져올 수 없습니다.

답변