2017-12-19 1 views
1

저는 파이썬에 익숙하지 않습니다. 그리고 가져 오는 시스템에서 문제를 극복하는 데 정말로 시간이 없습니다.하위 모듈 가져 오기

/src  
/src/main.py  
/src/submodules/ 
/src/submodules/submodule.py 
/src/submodules/subsubmodules 
/src/submodules/subsubmodules/subsubmodule.py 

모든 폴더 (SRC, 서브 모듈, subsubmodules)이 빈 __init__.py 파일 :

내가 파일 아래에 제시 시스템을 가지고 말할 수 있습니다. submodule.py에서

는 내가 가지고 : main.py에서

from subsubmodules import subsubmodule 

는 내가 가지고 :

from submodules import submodule 

내가 실행 submodule.py 파이썬은 가져 오기를 받아들입니다. 하지만 main.py를 실행하면 python은/src/submodules/subsubmodules/폴더가 경로에 없으므로 subsubmodule.py 가져 오기 오류가 발생합니다. 그 후 내가 submodule.py을 실행하고 뭔가 다른 열쇠 있는지 확인 메신저 할 수 없기 때문에

유일한 해결책은 끔찍한 솔루션으로

from submodules.subsubmodules import subsubmodule 

에이 날 것으로 보인다 submodule.py의 수입을 변경하는 것입니다 그. 사용하여 수동으로 할이 파이썬 사용하여 바로 가져 오기 시스템이 아닌 다른 방법을 할 수있는 방법을 위해, 거기에

import os 
import sys 
import inspect 


cmd_subfolder = os.path.split(inspect.getfile(inspect.currentframe()))[0] 
if cmd_subfolder not in sys.path: 
    sys.path.insert(0, cmd_subfolder) 

:

타 솔루션은 __init__.py 파일에 다음 코드를 추가하는 것입니다 예 sys.path 또는 os, inspect 등의 다른 모듈 ...?

가져 오는 모듈을 신경 쓰지 않고 어떻게 모듈을 가져올 수 있습니까?

답변

0

당신은 당신이 당신의 패키지의 최상위에 그것을 위해 쉘이나 파이썬 스크립트를 추가 할 수없는 것 subsubmodule.py

python3 -m submodule.subsubmodules.subsubmodule 

당신이 그것을 호출하는 짧은 방법을 원하는 경우에

으로 실행할 수 있습니다.

이것은 수입이 Python 3에서 작동하는 방식입니다. there are reasons for that.

0

프로그램에서 sys.path을 사용하면이 문제를 피할 수 있습니다.

sys.path.insert(0, './lib') 
import subsubmodule 

이 코드를 들어, lib 폴더에 모든 수입을 넣을 수 있습니다.

official documentation on Python packages을 읽을 수 있습니다. 자세한 내용은 여기를 참조하십시오.