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__.py
python 프로젝트를 실행하는 동안 오류가 표시되는 폴더 아래에 있습니다.
둘 다 동일한 인터프리터를 사용하고 있는지 확인합니다.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_profile
java.
이렇게 고쳤습니다.
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
비슷한 문제가 있었는데, 전화로 해결했습니다.python3
에 python
내 모듈은 Python 3.5에 있었습니다.
이 문제는 다른 버전 때문에 발생합니다. 예를 들어 컴퓨터에 설치된 Python이 다음 폴더에 설치된 경우path_to_lib/python3.6
하지만 당신의 노트북은 실행 중입니다.Python 3
명명 문제의 간격!
어떻게 풀까요?
새 주피터 노트북을 만들 때는 버전이 동일한 파이썬을 선택하면 됩니다(공백 조심!).첨부된 이미지를 참조하십시오.
저는 이 불일치의 또 다른 원인을 발견했습니다.
가상 환경에 로컬 및 일반적으로 설치된 ipython이 있습니다.문제는 ipython을 사용하여 새로 만든 가상 환경에서 시스템 ipython이 선택되었다는 것입니다. 이는 가상 환경의 python 및 ipython과 다른 버전입니다(2.7.x 대 3.5.x). 그리고 희열이 뒤따랐습니다.
저는 바이너리가 있는 것을 설치할 때마다 현명하게 해야 한다고 생각합니다.yourvirtualenv/bin
즉시 실행하는 것입니다.rehash
또는 당신이 사용하는 어떤 쉘에도 유사하여 정확한 파이썬/ipython을 선택할 수 있습니다. (적절한 것이 있는지 확인해야 합니다.)pip
설치 후 후크...)
스크립팅이 없는 솔루션:
- Spyder -> Tools -> PYONPATH 매니저 열기
- 경로 추가를 클릭하여 Python 경로를 추가합니다.예: 'C:\Users\User\AppData\Local\Programs\Python\Python37\Lib\site-packages'
- 동기화를 클릭합니다.다른 프로그램(예: 주피터 노트북)이 2단계에서 설정한 파이썬 경로를 사용할 수 있도록 합니다.
- 주피터가 열려 있는 경우 다시 시작
이 문제는 시스템에 설치된 다른 python 버전(예: python2 또는 python3) 때문일 수 있습니다.
실행 명령$ pip --version
그리고.$ pip3 --version
Python 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의 패키지입니다.디렉터리 이름을 다른 이름으로 변경하기만 하면 제대로 작동할 것입니다.
이 대답은 다음과 같은 경우 이 질문에 적용됩니다.
- 코드를 변경하고 싶지 않은 경우
- 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
다음을 사용하여 이 문제가 발생하는 경우conda
MSVS 코드에서 주피터 노트북을 사용하면 해결책은 올바른 커널을 사용하고 있는지 확인하는 것입니다.커널은 인터페이스의 오른쪽 상단 모서리에 있는 상자에 있으며 다음과 같이 나타납니다.
저는 제 애플리케이션 경로와 일치하는 파이썬 버전을 가리켰습니다. 문제가 해결되었습니다!
이것이 바로 저에게 효과적인 방법입니다. 노트북 내부의 작업 디렉터리를 변경했습니다.
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
'sourcetip' 카테고리의 다른 글
-I dir vs. -I system dir (0) | 2023.06.17 |
---|---|
실행 실패:mariadb 및 perl DBD가 있는 '\xD6sterl...' 문자열 값이 잘못되었습니다. (0) | 2023.06.17 |
SQL: 결과 행을 여러 번 반복하고 행 번호를 지정합니다. (0) | 2023.06.17 |
회계 응용 프로그램 달러 금액에 float 또는 decimal을 사용합니까? (0) | 2023.06.17 |
파이어스토어에서 지역 "근처" 쿼리를 실행하는 방법은 무엇입니까? (0) | 2023.06.17 |