헤더가 이해하기 어려울 수도 있지만 가능한 한 설명하려고 노력할 것입니다. __init__.py
내부, 나는이있어파이썬 가져 오기 : 모듈의 경로는 가져온 위치에 따라 다릅니다.
__init__.py
Class1.py
Class2.py
:
나는 3 개 총 파일 포함 SubModule
라는 폴더가
import Class1
import Class2
def main():
c1 = Class1.Class1()
c2 = Class2.Class2()
if __name__ == "__main__":
main()
를 그리고 모두가 오류없이 잘 작동, 내가 할 수있는 c1과 c2를 올바르게 사용하십시오. 내가 다른 모듈의 아래 SubModule
폴더를 이동하려고 할 때
문제가 나타납니다 폴더 (의이 MainModule
를 부르 자). 그래서 나는 다음있을 것입니다 :
MainModule\__init__.py
MainModule\SubModule\__init__.py
MainModule\SubModule\Class1.py
MainModule\SubModule\Class2.py
을 지금은과 같이 MainModule\__init__.py
에서 SubModule
을 가져올 때 :
import SubModule
c1 = SubModule.ClassOne.ClassOne()
c2 = SubModule.ClassTwo.ClassTwo()
내가이 일을 기대. 당신이 볼 수 있듯이, 오류가 import Class1
에서 오는
Traceback (most recent call last):
File "C:\...\MainModule\__init__.py", line 1, in <module>
import SubModule
File "C:\...\MainModule\SubModule\__init__.py", line 1, in <module>
import Class1
ImportError: No module named 'Class1'
, 그리고 No module named 'Class1'
가 있다는 것을 저에게 말한다 : 그러나, MainModule\__init__.py
을 실행하는 SubModule\__init__.py
에서 오류가 발생합니다. 경로가 SubModule.Class1
인 경우에만 Class1
대신이 경로가 사용됩니다. 나는이에 SubModule\__init__.py
을 변경하여이 오류를 제거 할 수 있습니다 : 경로가 다시 import Class1
것 때문에
import SubModule.Class1
import SubModule.Class2
그러나, 나는 더 이상 대신 import SubModule.Class1
의, SubModule\__init__.py
을 실행하여 혼자 SubModule
을 사용할 수 없습니다.
이것은 나를 미치게합니다. 수입을 일반화 할 수있는 방법이 있습니까? 그렇다면 어떤 모듈이 SubModule을 가져 오는지는 중요하지 않습니까?
이것은 가져 오기를하는 이상한 방법입니다. SubModule을 한 곳에 넣고 시스템 경로에 추가하고 항상 거기에서 가져 오지 않는 이유는 무엇입니까? – BrenBarn