Python에서 "ImportError : No module named…"오류를 수정하는 방법은 무엇입니까?
이 ImportError 오류를 수정하는 올바른 방법은 무엇입니까?
다음과 같은 디렉토리 구조가 있습니다.
/home/bodacydo
/home/bodacydo/work
/home/bodacydo/work/project
/home/bodacydo/work/project/programs
/home/bodacydo/work/project/foo
그리고 나는 디렉토리에 있습니다.
/home/bodacydo/work/project
이제 입력하면
python ./programs/my_python_program.py
나는 즉시 얻는다
ImportError: No module named foo.tasks
./programs/my_python_program.py에는 다음 행 이 포함됩니다.
from foo.tasks import my_function
파이썬이 왜 찾지 못하는지 이해할 수 없습니다 ./foo/tasks.py. 거기에 있습니다.
Python 셸에서 수행하면 작동합니다.
python
>>> from foo.tasks import my_function
python ./programs/my_python_program.py스크립트 를 통해 호출하는 경우에만 작동하지 않습니다 .
Python은 현재 디렉터리를에 추가하지 않고 sys.path스크립트가있는 디렉터리에 추가 /home/bodacydo/work/project합니다 . sys.path또는에 추가 합니다 $PYTHONPATH.
__init__.pyfoo 디렉토리에 파일이 있습니까? 그렇지 않으면 파이썬은 foo를 파이썬 패키지로 인식하지 않습니다.
자세한 내용은 python 튜토리얼의 패키지 섹션 을 참조하십시오.
다음은 단계별 솔루션입니다.
run.py에서 호출 된 스크립트를 추가/home/bodacydo/work/project하고 다음과 같이 편집하십시오.import programs.my_python_program programs.my_python_program.main()(
main()에서 동등한 방법으로 대체 하십시오my_python_program.)- 이동
/home/bodacydo/work/project - 운영
run.py
설명 : python 은 실행되는 스크립트 의 경로를 PYTHONPATH에 추가하므로 실행 run.py하면 /home/bodacydo/work/project. 그리고 함으로써 해결할 수 , import foo.tasks발견 될 것이다.
PYTHONPATH에 라이브러리를 추가하는 예제 솔루션입니다.
~ / .bashrc에 다음 행을 추가하거나 직접 실행하십시오.
export PYTHONPATH="$PYTHONPATH:$HOME/.python"그런 다음 필요한 라이브러리를 ~ / .python 폴더에 연결합니다.
ln -s /home/user/work/project/foo ~/.python/
더 나은 설정보다 수정 PYTHONPATH사용하는 것입니다python -m module.path
이것은 올바르게 설정 sys.path[0]되고 모듈을 실행하는 더 안정적인 방법입니다.
나는이 빠른 작성자 의 다른 답변자가 언급 한 것처럼,이 문제에 대한을 이유로 이에 대한 인 python path/to/file.py풋 path/to의 시작 부분에 PYTHONPATH( sys.path).
내 생각에는 foo폴더가 독립 실행 형 라이브러리라는 것을 고려해야합니다 . Lib\site-packages파이썬 설치 내의 폴더로 옮기는 것을 고려할 수 있습니다 . foo.pth거기 에 파일을 추가하는 것을 고려할 수 있습니다 .
./programs/my_python_program.py에 다음 줄 이 포함되어 있기 때문에 라이브러리라는 것을 알고 있습니다 .
from foo.tasks import my_function
따라서 그것이 ./programs.NET의 형제 폴더 인지 는 중요하지 않습니다 ./foo. my_python_program.py다음과 같은 스크립트로 실행 되는 것은 사실입니다 .
파이썬 ./programs/my_python_program.py
참고URL : https://stackoverflow.com/questions/2325923/how-to-fix-importerror-no-module-named-error-in-python
'developer tip' 카테고리의 다른 글
| 티에 배관 할 때 stdout의 강제 라인 버퍼링 (0) | 2020.08.16 |
|---|---|
| 모든 테스트가 최신 상태 일 때 Gradle 테스트를 실행하는 방법은 무엇입니까? (0) | 2020.08.16 |
| 약속 스타일 작업에서는 시작을 호출 할 수 없습니다. (0) | 2020.08.15 |
| Java 코드 온라인 실행 (0) | 2020.08.15 |
| C #의 StringBuilder와 같은 Python 문자열 클래스? (0) | 2020.08.15 |