<질문>
무엇보다도 파이썬 스크립트를 시작하는 스크립트를 실행하려고합니다. ImportError : No module named ...가 발생하지만 ipython을 실행하고 인터프리터를 통해 동일한 방식으로 동일한 모듈을 가져 오면 모듈이 허용됩니다.
무슨 일이 일어나고 있으며 어떻게 해결할 수 있습니까? 파이썬이 PYTHONPATH를 사용하는 방법을 이해하려고 노력했지만 완전히 혼란 스럽습니다. 어떤 도움이라도 대단히 감사하겠습니다.
<답변1>
이 문제는 명령 줄 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를 전역 변수로 편집하거나 설정하는 것은 OS에 따라 다르며 여기에서 자세히 설명합니다.Unix또는Windows.
<답변2>
이름으로 빈 파이썬 파일을 만드십시오.__init__.py
파이썬 프로젝트를 실행하는 동안 오류를 표시하는 폴더 아래.
<답변3>
둘 다 동일한 인터프리터를 사용하고 있는지 확인하십시오. 이것은 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을 제거했습니다.
<답변4>
주된 이유는 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")'
]
끝난
<답변5>
하기sys.path.append('my-path-to-module-folder')
작동하지만 모듈을 사용할 때마다 IPython에서이 작업을 수행하지 않으려면 다음을 추가 할 수 있습니다.export PYTHONPATH="my-path-to-module-folder:$PYTHONPATH"
너의 ~에게~/.bash_profile
파일.
<답변6>
이것이 내가 수정 한 방법입니다.
import os
import sys
module_path = os.path.abspath(os.getcwd() + '\\..')
if module_path not in sys.path:
sys.path.append(module_path)
<답변7>
ipython을 설치하기 전에 easy_install을 통해 모듈을 설치했습니다. 말하다sudo easy_install mechanize
.
ipython을 설치 한 후 모듈을 인식하기 위해 ipython 용 easy_install을 다시 실행해야했습니다.
<답변8>
비슷한 문제가 발생했습니다.python3
대신에python
, 내 모듈은 Python3.5에 있습니다.
<답변9>
명령 줄에서 실행하는 경우 때때로 파이썬 인터프리터가 모듈을 찾을 경로를 인식하지 못합니다.
다음은 내 프로젝트의 디렉토리 구조입니다.
/project/apps/..
/project/tests/..
아래 명령을 실행했습니다.
>> cd project
>> python tests/my_test.py
위의 명령을 실행 한 후 오류가 발생했습니다.
no module named lib
lib는 my_test.py에서 가져 왔습니다.
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)
나는 그것이 그것을 해결하는 좋은 방법인지 확실하지 않지만 네, 그것은 저에게 효과적이었습니다.
<답변10>
이 문제에 대한 해결책이 여기에 광범위하게 문서화되어 있음을 발견했습니다.
https://jakevdp.github.io/blog/2017/12/05/installing-python-packages-from-jupyter/
기본적으로 다음과 같은 셸 명령을 실행하여 Jupyter 환경 내에 패키지를 설치해야합니다.
!{sys.executable} -m pip install numpy
신뢰할 수있는 전체 답변은 위의 링크를 확인하십시오.
<답변11>
이 불일치의 또 다른 원인을 찾았습니다.
ipython을 로컬 및 일반적으로 virtualenvs에 모두 설치했습니다. 내 문제는 ipython을 사용하여 새로 만든 virtualenv 내부에서 시스템 ipython이 선택되었는데, 이는 virtualenv의 python 및 ipython과 다른 버전 (2.7.x 대 3.5.x)이었고 환희가 계속되었습니다.
바이너리가있는 무언가를 설치할 때마다해야 할 현명한 일은yourvirtualenv/bin
즉시 실행하는 것입니다rehash
또는 올바른 python / ipython이 선택되도록 사용중인 쉘에 대해 유사합니다. (적합한 지 확인해야pip
설치 후 후크 ...)
<답변12>
스크립팅없는 솔루션 :
- Spyder-> 도구-> PYTHONPATH 관리자를 엽니 다.
- "경로 추가"를 클릭하여 Python 경로를 추가합니다. 예 : 'C : \ Users \ User \ AppData \ Local \ Programs \ Python \ Python37 \ Lib \ site-packages'
- 다른 프로그램 (예 : Jupyter 노트북)이 2 단계에서 설정 한 pythonpaths를 사용하도록하려면 "동기화 ..."를 클릭합니다.
- Jupyter가 열려 있으면 다시 시작하십시오.
<답변13>
이것은 아마도시스템에 설치된 다른 Python 버전으로 인해 발생, 즉python2또는python3.
실행 명령$ pip --version
과$ pip3 --version
확인하기 위해씨~에서파이썬 3x. 예를 들어 아래와 같은 버전 정보가 표시되어야합니다.
pip 19.0.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
그런 다음example.py
아래 명령으로 스크립트
$ python3 example.py
<답변14>
디렉토리와 함께 나에게 일어났다.utils
. 이 디렉토리를 다음과 같이 가져 오려고했습니다.
from utils import somefile
utils
이미 파이썬 패키지입니다. 디렉토리 이름을 다른 이름으로 변경하면 정상적으로 작동합니다.
<답변15>
이런 종류의 오류는 아마도 파이썬 버전 충돌로 인해 발생합니다. 예를 들어 애플리케이션이 python 3에서만 실행되고 python 2도있는 경우 사용할 버전을 지정하는 것이 좋습니다. 예를 들어 사용
python3 .....
대신에
python
<답변16>
이 답변은 다음과 같은 경우이 질문에 적용됩니다.
- 코드를 변경하고 싶지 않습니다.
- PYTHONPATH를 영구적으로 변경하고 싶지 않습니다.
아래 경로는 상대적 일 수 있습니다.
PYTHONPATH=/path/to/dir python script.py
<답변17>
import sys sys.path.append ( '/ Users / {user} /Library/Python/3.7/lib/python/site-packages') import ta
<답변18>
없애다pathlib
다시 설치하십시오. 에서 pathlib 삭제sitepackages
폴더를 열고 pip 명령을 사용하여 pathlib 패키지를 다시 설치합니다.
pip install pathlib
'개발 > Python' 카테고리의 다른 글
[파이썬] 다른 파일에서 변수 가져오기? (0) | 2021.04.17 |
---|---|
[파이썬] 바이트 문자열을 정수로 변환하는 방법은 무엇입니까? (0) | 2021.04.17 |
Python에서 병렬 프로그래밍을 수행하는 방법은 무엇입니까? (0) | 2021.02.07 |
[파이썬] pandas 고유값, 여러 컬럼 (0) | 2021.02.07 |