sourcetip

Python 스크립트 실행 시 "ImportError: No module named"

fileupload 2023. 6. 17. 09:37
반응형

Python 스크립트 실행 시 "ImportError: No module named"

저는 무엇보다도 파이썬 스크립트를 실행하는 스크립트를 실행하려고 합니다.는 는나를 .ImportError: No module named ...그러나 ipython을 실행하고 인터프리터를 통해 동일한 모듈을 가져오면 모듈이 수락됩니다.

무슨 일이 일어나고 있으며 어떻게 고칠 수 있습니까?파이썬이 어떻게 PYONPATH를 사용하는지 이해하려고 노력했지만 완전히 혼란스럽습니다.어떤 도움이라도 주시면 대단히 감사하겠습니다.

이 문제는 명령줄 IPython 인터프리터가 현재 경로를 사용하는 방식과 별도의 프로세스(IPython 노트북, 외부 프로세스 등)를 사용하는 방식으로 인해 발생합니다.IPython은 sys.path뿐만 아니라 현재 작업 디렉터리에서도 가져올 모듈을 찾습니다.명령줄에서 인터프리터를 시작할 때 현재 사용 중인 디렉터리는 ipython에서 시작한 디렉터리와 동일합니다.실행하는 경우

import os
os.getcwd() 

이것이 사실이라는 것을 알게 될 것입니다.

노트북을 해 보겠습니다.os.getcwd() 파일으로 ipython_notebook_config.py 파일 입니다.c.NotebookManager.notebook_dir설정).

해결책은 파이썬 인터프리터에 모듈로의 경로를 제공하는 것입니다.가장 간단한 해결 방법은 해당 경로를 sys.path 목록에 추가하는 것입니다.노트북에서 먼저 시도해 보십시오.

import sys
sys.path.append('my/path/to/module/folder')

import module_of_interest

이 방법이 효과가 없으면 가져오기 경로와 관련이 없는 다른 문제가 발생하므로 문제에 대한 자세한 정보를 제공해야 합니다.

이 문제를 해결하는 더 나은(그리고 더 영구적인) 방법은 PYTHONPATH를 설정하는 것입니다. PYTHONPATH는 인터프리터가 python 패키지/모듈을 찾는 추가 디렉토리를 제공합니다.PYTHONPATH를 글로벌 varios 의존으로 편집 또는 설정하는 방법에 대해서는 여기에서 Unix 또는 Windows에 대해 자세히 설명합니다.

이으로빈파일을만됩하니면다들만기름▁name▁the▁▁with라는 이름으로 빈 python .__init__.pypython 프로젝트를 실행하는 동안 오류가 표시되는 폴더 아래에 있습니다.

둘 다 동일한 인터프리터를 사용하고 있는지 확인합니다.Ubuntu에서 발생한 일입니다.

$ ipython3 -c 'import sys; print(sys.version)'
3.4.2 (default, Jun 19 2015, 11:34:49) \n[GCC 4.9.1]

$ python3 -c 'import sys; print(sys.version)'
3.3.0 (default, Nov 27 2012, 12:11:06) \n[GCC 4.6.3]

그리고.sys.path두 통역사 사이에 차이가 있었습니다.수정을 위해 Python 3.3을 제거했습니다.

주된 이유는 Python과 IPython의 sys.path가 다르기 때문입니다.

루시파크 링크를 참고해주세요, 저의 경우 해결책이 됩니다.opencv를 설치할 때 발생합니다.

conda install opencv

그리고 iPython에서 가져오기 오류가 발생했습니다. 이 문제를 해결하기 위한 세 가지 단계가 있습니다.

import cv2
ImportError: ...

다음 명령을 사용하여 Python 및 iPython의 경로 확인

import sys
sys.path

당신은 파이썬과 주피터와는 다른 결과를 발견할 것입니다.두 번째 단계, 그냥 사용하세요.sys.path.append시도와 오류를 통해 누락된 경로를 수정합니다.

임시 해결책

iPython에서:

import sys
sys.path.append('/home/osboxes/miniconda2/lib/python2.7/site-packages')
import cv2

그자리의 ImportError:..된 문제

영구해

iPython 프로파일을 만들고 초기 추가를 설정합니다.

배시 셸에서:

ipython profile create
... CHECK the path prompted , and edit the prompted config file like my case
vi /home/osboxes/.ipython/profile_default/ipython_kernel_config.py

vi에서 다음 파일에 추가합니다.

c.InteractiveShellApp.exec_lines = [
 'import sys; sys.path.append("/home/osboxes/miniconda2/lib/python2.7/site-packages")'
]

다 했어요.

하고있다sys.path.append('my-path-to-module-folder')모듈을 에서 이 해야 하는 것을 IPython을 추가할 수 .export PYTHONPATH="my-path-to-module-folder:$PYTHONPATH"의 신에게에.~/.bash_profilejava.

이렇게 고쳤습니다.

import os
import sys
module_path = os.path.abspath(os.getcwd() + '\\..')
if module_path not in sys.path:
    sys.path.append(module_path)

ipython을 통해 했습니다.sudo easy_install mechanize.

ipython을 설치한 후 모듈을 인식하기 위해 easy_install을 다시 실행해야 했습니다.

명령줄에서 실행하는 경우 python 인터프리터가 모듈을 찾는 경로를 모를 수 있습니다.

아래는 제 프로젝트의 디렉터리 구조입니다.

/project/apps/..
/project/tests/..

나는 명령에 따라 달리고 있었습니다.

>> cd project

>> python tests/my_test.py

위 명령을 실행한 후 아래 오류가 발생했습니다.

no module named lib

lib를 my_test에서 가져왔습니다.파이의

저는 sys.path를 인쇄했고 제가 작업하고 있는 프로젝트의 경로가 sys.path 목록에서 사용할 수 없다는 것을 알게 되었습니다.

는 제 했습니다.my_test.py.

import sys
import os

module_path = os.path.abspath(os.getcwd())    

if module_path not in sys.path:       

    sys.path.append(module_path)

나는 그것이 그것을 해결하는 좋은 방법인지 확신할 수 없지만 네, 그것은 나에게 효과가 있었습니다.

이 문제에 대한 솔루션은 다음과 같이 광범위하게 문서화되어 있습니다.

https://jakevdp.github.io/blog/2017/12/05/installing-python-packages-from-jupyter/

기본적으로 다음과 같은 셸 명령을 실행하여 Jupyter 환경 내에 패키지를 설치해야 합니다.

!{sys.executable} -m pip install numpy

신뢰할 수 있는 전체 답변은 위 링크를 확인하십시오.

이러한 오류는 python 버전 충돌로 인해 발생할 수 있습니다.예를 들어, 응용 프로그램이 python 3에서만 실행되고 python 2도 사용했다면 사용할 버전을 지정하는 것이 좋습니다.예를 들어 사용

python3 .....

대신에

python

비슷한 문제가 있었는데, 전화로 해결했습니다.python3python내 모듈은 Python 3.5에 있었습니다.

이 문제는 다른 버전 때문에 발생합니다. 예를 들어 컴퓨터에 설치된 Python이 다음 폴더에 설치된 경우path_to_lib/python3.6하지만 당신의 노트북은 실행 중입니다.Python 3명명 문제의 간격!

어떻게 풀까요?

새 주피터 노트북을 만들 때는 버전이 동일한 파이썬을 선택하면 됩니다(공백 조심!).첨부된 이미지를 참조하십시오.

Choose correct Python versioning

저는 이 불일치의 또 다른 원인을 발견했습니다.

가상 환경에 로컬 및 일반적으로 설치된 ipython이 있습니다.문제는 ipython을 사용하여 새로 만든 가상 환경에서 시스템 ipython이 선택되었다는 것입니다. 이는 가상 환경의 python 및 ipython과 다른 버전입니다(2.7.x 대 3.5.x). 그리고 희열이 뒤따랐습니다.

저는 바이너리가 있는 것을 설치할 때마다 현명하게 해야 한다고 생각합니다.yourvirtualenv/bin즉시 실행하는 것입니다.rehash또는 당신이 사용하는 어떤 쉘에도 유사하여 정확한 파이썬/ipython을 선택할 수 있습니다. (적절한 것이 있는지 확인해야 합니다.)pip설치 후 후크...)

스크립팅이 없는 솔루션:

  1. Spyder -> Tools -> PYONPATH 매니저 열기
  2. 경로 추가를 클릭하여 Python 경로를 추가합니다.예: 'C:\Users\User\AppData\Local\Programs\Python\Python37\Lib\site-packages'
  3. 동기화를 클릭합니다.다른 프로그램(예: 주피터 노트북)이 2단계에서 설정한 파이썬 경로를 사용할 수 있도록 합니다.
  4. 주피터가 열려 있는 경우 다시 시작

이 문제는 시스템에 설치된 다른 python 버전(: python2 또는 python3) 때문일 있습니다.

실행 명령$ pip --version그리고.$ pip3 --versionPython 3x에서 어떤 파이프에서 왔는지 확인하려면 아래와 같은 버전 정보를 확인해야 합니다.

pip 19.0.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

실행합니다.example.py아래 명령을 사용한 스크립트

$ python3 example.py

디렉토리에서 발생한 일입니다.utils이 디렉터리를 다음과 같이 가져오려고 했습니다.

from utils import somefile

utils이미 python의 패키지입니다.디렉터리 이름을 다른 이름으로 변경하기만 하면 제대로 작동할 것입니다.

이 대답은 다음과 같은 경우 이 질문에 적용됩니다.

  1. 코드를 변경하고 싶지 않은 경우
  2. PYTHONPATH를 영구적으로 변경하지 않으려는 경우

PYTHONPATH 임시 수정

아래 경로는 상대적일 수 있습니다.

PYTHONPATH=/path/to/dir python script.py
import sys
sys.path.append('/Users/{user}/Library/Python/3.7/lib/python/site-packages')
import ta

다음을 사용하여 이 문제가 발생하는 경우condaMSVS 코드에서 주피터 노트북을 사용하면 해결책은 올바른 커널을 사용하고 있는지 확인하는 것입니다.커널은 인터페이스의 오른쪽 상단 모서리에 있는 상자에 있으며 다음과 같이 나타납니다.

enter image description here

저는 제 애플리케이션 경로와 일치하는 파이썬 버전을 가리켰습니다. 문제가 해결되었습니다!

이것이 바로 저에게 효과적인 방법입니다. 노트북 내부의 작업 디렉터리를 변경했습니다.

import os

os.chdir("my/path/to/module")
os.getcwd() 

주피터 연구소 설정에서 유사한 문제가 발생했습니다. 주피터 연구소 로그를 열어 해결했습니다.이것은 가상 환경(pipenv)이 Jupyter Lab을 찾을 수 없어서 공유 버전(이전 Python 설치에서)을 사용했다는 것을 알려주었습니다.

요구사항을 작성했습니다.txt 그리고 내가 이 새로운 환경에 주피터 랩을 설치하지 않았다는 것을 발견했습니다.설치하여 가져오기 오류를 해결했습니다.

한 가지 미묘한 방법은 파일 이름이 아나콘다 환경 이름과 같을 때입니다.이것은 두 개의 다른 파일에서 정확히 동일한 코드로 발생했는데, 하나는 실수로 아나콘다 환경에서 "모듈을 찾을 수 없는 오류"가 발생했습니다.

제다한을 합니다.pathlib다시 설치합니다.pathlib의 합니다.sitepackages명령을 하고 다시 합니다.

pip install pathlib

언급URL : https://stackoverflow.com/questions/15514593/importerror-no-module-named-when-trying-to-run-python-script

반응형