시스템 오류: 상위 모듈 '이(가) 로드되지 않았습니다. 상대 가져오기를 수행할 수 없습니다.
다음 디렉터리가 있습니다.
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
'programing' 카테고리의 다른 글
Git Bash의 Azure CLI (0) | 2023.06.04 |
---|---|
여러 모니터에서 Eclipse 환경을 구성하는 방법에 대한 팁이 있습니까? (0) | 2023.06.04 |
SSL 인증서 확인 오류로 인해 번들 설치가 실패함 (0) | 2023.06.04 |
Xcode 4.2 - '...' 선언은 이 기능 경고 이외에는 표시되지 않습니다. (0) | 2023.06.04 |
활성 레코드: 크기 대 개수 (0) | 2023.06.04 |