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__.py
foo 디렉토리에 파일이 있습니까? 그렇지 않으면 파이썬은 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 |