programing

Python에서 "ImportError: No module name..." 오류를 해결하는 방법은 무엇입니까?

megabox 2023. 7. 23. 14:09
반응형

Python에서 "ImportError: No module name..." 오류를 해결하는 방법은 무엇입니까?

이 가져오기 오류를 해결하는 올바른 방법은 무엇입니까?

디렉토리 구조는 다음과 같습니다.

/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 디렉토리에?그렇지 않으면 python은 foo를 python 패키지로 인식하지 못할 것입니다.

자세한 내용은 python 튜토리얼의 패키지 섹션을 참조하십시오.

설정보다 나은 해결책PYTHONPATH사용하는 것입니다.python -m module.path

올바르게 설정됩니다.sys.path[0]모듈을 실행하는 보다 안정적인 방법입니다.

다른 답변자들이 그 이유를 언급했기 때문에 저는 이 문제에 대해 간단히 글을 올렸습니다.python path/to/file.py놓다path/to초에PYTHONPATH(sys.path).

다음은 단계별 솔루션입니다.

  1. 다음 스크립트 추가run.py/home/bodacydo/work/project다음과 같이 편집합니다.

    import programs.my_python_program
    programs.my_python_program.main()
    

    (교체)main()당신의 동등한 방법으로my_python_program.)

  2. 에 가다/home/bodacydo/work/project
  3. 달려.run.py

설명:python이 PYONPATH에 추가되기 때문에 실행되는 스크립트의 경로, 실행run.py추가할 것/home/bodacydo/work/project그리고 voila,import foo.tasks찾을 수 있습니다.

PYONPATH에 라이브러리를 추가하기 위한 솔루션의 예입니다.

  1. ~/.bashrc에 다음 행을 추가하거나 직접 실행합니다.

    export PYTHONPATH="$PYTHONPATH:$HOME/.python"
    
  2. 그런 다음 필요한 라이브러리를 ~/.python 폴더에 연결합니다.

    ln -s /home/user/work/project/foo ~/.python/
    

제 마음속으로 저는 그것을 고려해야 합니다.foo폴더가 독립 실행형 라이브러리입니다.저는 그것을 그 곳으로 옮기는 것을 고려하고 싶을지도 모릅니다.Lib\site-packagespython 설치 내의 폴더입니다.다음을 추가하는 것을 고려해 보겠습니다.foo.pth거기에 줄을 서세요.

도서관이라는 건 알고 있어요./programs/my_python_program.py에는 다음 행이 포함됩니다.

from foo.tasks import my_function

그러니까 그건 중요하지 않아요../programs의 형제 폴더입니다../foo는 사실입니다.my_python_program.py다음과 같은 스크립트로 실행됩니다.

python ./python/my_myslog_program.py

설치된 버전을 사용할 때 이 문제가 발생하면 사용할 때setup.py모듈이 내부에 포함되어 있는지 확인합니다.packages

setup(name='Your program',
    version='0.7.0',
    description='Your desccription',
    packages=['foo', 'foo.bar'], # add `foo.bar` here

언급URL : https://stackoverflow.com/questions/2325923/how-to-fix-importerror-no-module-named-error-in-python

반응형