파이썬 스크립트를 시작하는 스크립트를 실행하려고합니다. ImportError : No module named …라는 메시지가 표시되지만 ipython을 시작하고 인터프리터를 통해 동일한 방식으로 동일한 모듈을 가져 오면 모듈이 허용됩니다.
무슨 일이 일어나고 어떻게 해결할 수 있습니까? 파이썬이 PYTHONPATH를 어떻게 사용하는지 이해하려고 노력했지만 완전히 혼란 스럽습니다. 어떤 도움이라도 대단히 감사하겠습니다.
답변
이 문제는 명령 행 IPython 인터프리터가 현재 경로를 사용하는 방법과 별도의 프로세스 (IPython 노트북, 외부 프로세스 등) 와 같은 방식으로 인해 발생합니다 . IPython은 sys.path뿐만 아니라 현재 작업중인 디렉토리에서도 가져올 모듈을 찾습니다. 명령 행에서 인터프리터를 시작할 때 현재 작동중인 디렉토리는 ipython을 시작한 디렉토리와 동일합니다.
import os
os.getcwd()
이것이 사실임을 알 수 있습니다.
그러나 ipython 노트북을 사용하고 있고 실행 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 를 설정하여 인터프리터에게 파이썬 패키지 / 모듈에 대한 추가 디렉토리를 제공합니다. PYTHONPATH를 전역 변수로 편집하거나 설정하는 것은 운영 체제에 따라 다르며 여기에서 Unix 또는 Windows에 대해 자세히 설명합니다 .
답변
__init__.py
python 프로젝트를 실행하는 동안 폴더 아래 에 이름 으로 빈 python 파일을 작성하면 오류가 표시됩니다.
답변
둘 다 동일한 통역사를 사용하고 있는지 확인하십시오. 우분투에서 나에게 일어난 일 :
$ 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가 다르기 때문입니다.
lucypark link를 참조하십시오 . 솔루션이 작동합니다. opencv를 설치하면 발생합니다.
conda install opencv
iPython에서 가져 오기 오류가 발생했습니다.이 문제를 해결하려면 다음 세 단계가 있습니다.
import cv2
ImportError: ...
1. 다음 명령으로 Python 및 iPython의 경로를 확인하십시오.
import sys
sys.path
Python과 Jupyter와는 다른 결과가 나타납니다. 두 번째 단계 sys.path.append
는 시도하여 오류로 누락 된 경로를 수정하는 데 사용 하십시오.
2. 임시 솔루션
iPython에서 :
import sys
sys.path.append('/home/osboxes/miniconda2/lib/python2.7/site-packages')
import cv2
ImportError:..
문제 해결
3. 영구적 인 해결책
iPython 프로파일을 작성하고 초기 추가를 설정하십시오.
bash 쉘에서 :
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
파일.
답변
ipython을 설치하기 전에 easy_install을 통해 모듈을 설치했습니다. 말하다sudo easy_install mechanize
.
ipython을 설치 한 후, ipython이 모듈을 인식하도록 easy_install을 다시 실행해야했습니다.
답변
비슷한 문제 가 있었지만 python3
대신 대신 호출하여 문제를 해결했습니다 python
. 내 모듈은 Python3.5였습니다.