programing

시스템 오류: 상위 모듈 '이(가) 로드되지 않았습니다. 상대 가져오기를 수행할 수 없습니다.

testmans 2023. 6. 4. 10:19
반응형

시스템 오류: 상위 모듈 '이(가) 로드되지 않았습니다. 상대 가져오기를 수행할 수 없습니다.

다음 디렉터리가 있습니다.

myProgram
└── app
    ├── __init__.py
    ├── main.py 
    └── mymodule.py

나의 모듈py:

class myclass(object):

def __init__(self):
    pass

def myfunc(self):
    print("Hello!")

main.py :

from .mymodule import myclass

print("Test")
testclass = myclass()
testclass.myfunc()

하지만 실행하면 다음 오류가 발생합니다.

Traceback (most recent call last):
  File "D:/Users/Myname/Documents/PycharmProjects/myProgram/app/main.py", line 1, in <module>
    from .mymodule import myclass
SystemError: Parent module '' not loaded, cannot perform relative import

효과:

from mymodule import myclass

그러나 이것을 입력하면 "미해결 참조: mymodule" 및 "미해결 참조: myclass"라는 메시지가 표시됩니다.그리고 제가 연구하고 있는 다른 프로젝트에서, 저는 "ImportError: 'mymodule'이라는 이름의 모듈이 없습니다.

어떻게 해야 합니까?

저도 같은 문제가 있었는데 상대적인 문제가 아닌 절대적인 수입으로 해결했습니다.

예를 들어, 당신의 경우, 당신은 다음과 같은 것을 쓸 수 있습니다:

from app.mymodule import myclass

설명서에서 확인할 수 있습니다.

상대 가져오기는 현재 모듈의 이름을 기반으로 합니다.메인 모듈의 이름은 항상 "입니다.__main__Python 응용 프로그램의 기본 모듈로 사용되는 모듈은 항상 절대 가져오기를 사용해야 합니다.

편집: 이 오류가 발생한 경우ImportError: No module named 'app.app'; 'app' is not a package다음을 추가하는 것을 기억합니다.__init__.py파일에 저장app디렉터리를 표시하여 인터프리터가 패키지로 볼 수 있도록 합니다.파일이 비어 있어도 괜찮습니다.

주로 다음 해결 방법을 사용합니다.

try:
    from .mymodule import myclass
except Exception: #ImportError
    from mymodule import myclass

즉, IDE가 올바른 코드 위치를 선택하면 파이썬 인터프리터가 코드를 실행할 수 있습니다.

그냥 실행하면 됩니다.main.py의 밑에app와 같이 수입함.

from mymodule import myclass

전화를 원하시면main.py다른 폴더에서 다음을 사용합니다.

from .mymodule import myclass

예:

├── app
│   ├── __init__.py
│   ├── main.py
│   ├── mymodule.py
├── __init__.py
└── run.py

main.py

from .mymodule import myclass

run.py

from app import main
print(main.myclass)

그래서 제 생각에 당신의 주된 질문은 어떻게 전화를 하느냐입니다.app.main.

bash 셸의 명령줄에서 스크립트를 실행하는 과정에서 한 단계 업그레이드하면 문제가 해결됩니다.이 작업을 수행하려면 다음과 같이 하십시오.cd ..스크립트가 실행될 작업 디렉터리를 변경하는 명령입니다.결과는 다음과 같습니다.

[username@localhost myProgram]$

이것보다는:

[username@localhost app]$

스크립트를 다음 형식으로 실행하는 대신 사용자가 작업에 참여하면 됩니다.

python3 mymodule.py

다음으로 변경:

python3 app/mymodule.py

이 프로세스는 트리 다이어그램의 구조에 따라 한 단계 위에서 다시 반복할 수 있습니다.언급된 오류 메시지를 제공하는 컴파일 명령줄도 포함하십시오.

언급URL : https://stackoverflow.com/questions/33837717/systemerror-parent-module-not-loaded-cannot-perform-relative-import

반응형