확실히 설치된 모듈을 가져올 수 없습니다


144

mechanize를 설치 한 후 가져올 수없는 것 같습니다.

pip, easy_install 및 https://github.com/abielr/mechanizepython setup.py install 에서 설치를 시도했습니다 . 파이썬 인터랙티브에 들어갈 때마다 다음과 같이 얻을 수 있습니다.

Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mechanize
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named mechanize
>>> 

이전에 실행 한 설치에서 성공적으로 완료된 것으로보고되었으므로 가져 오기가 작동 할 것으로 예상합니다. 이 오류의 원인은 무엇입니까?


달리기의 결과를 보여줄 수 있습니까 easy_install? 또한,의 전체 경로 확인하십시오 easy_install, pip하고의를 python.
larsks

?) 당신은 확실히 그것은 (우분투에 기본 인 (2.6에 설치되지 않은 적어도 내 데비안에있어 있습니까
dav1d

음, 쉬운 설치 결과는 2.7에 설치되었음을 보여줍니다. Installed /usr/local/lib/python2.7/dist-packages/mechanize-0.2.6.dev_20130112-py2.7.egg
roy

@larks-원래 게시물에 해당 정보를 추가 함
roy

방금 pypi와 repo에서 setup.py, easy_install, pip와 같은 방법으로 시도했지만 실패하지 못했습니다. 당신은 확인할 수 있습니다 sys.path당신이 올바른 장소에서 찾고 있는지 확인하기 위해 ls -laR /usr/local/lib/python2.7/dist-packages/mech*권한 문제를 확인하고, 봐 imp.find_module("mechanize")구별하는 그렇지 않으면 .. - - 그것을 발견하고 그렇지 않으면 ..이 - 생존 - 수입 - 그것에게 오류를?
DSM

답변:


100

제 경우에는 권한 문제입니다. 패키지는 루트 rw 권한으로 만 설치되었으며 다른 사용자는 rw를 사용할 수 없습니다!


26
이것은 나에게 일어났다 sudo pip install .... 간단한 수정 :sudo chmod -R ugo+rX /lib/python2.7/site-packages/
jozxyqk

3
나는 이것을 여러 번 겪었고 방금 이유를 발견했다고 생각합니다. umask가 sudo를 통과하므로 개인 umask가 빡빡하고 설치에 sudo를 사용하면 파일과 디렉토리가 과도하게 제한됩니다. 먼저 su를 실행 한 다음 전체 루트 셸에서 설치를 수행하면 결과 설치를 사용할 수 있습니다 (적어도 나에게는 적합합니다). 이것은 핍용이지만 apt-get에도 적용될 수 있습니다. 다른 사람들 이이 원인을 확인하면 그에 따라 답변을 수정하고 싶습니까?
Brandyn

jozxyqk 의견 추가 : $ pip show <package_name>
Federico

2
저도 마찬가지입니다. 그래서, Mac에서 파이썬 3.6 함께 일하고 sudo chmod 777 /usr/local/lib/python3.6/site-packages트릭했다
안토니오 세라노

3
sudo 777은 항상 매우 나쁜 생각입니다
Marx

81

같은 문제가 발생했습니다. with with 스크립트가 발생 import colorama하고 ImportError가 발생했지만 sudo pip install colorama"package already installed"라는 메시지가 표시되었습니다.

내 수정 : sudo없이 pip 실행 하십시오 pip install colorama. 그런 다음 pip는 설치, 설치 및 스크립트 실행이 필요하다는 데 동의했습니다.

내 환경은 Ubuntu 14.04 32 비트입니다. 나는 virtualenv를 활성화하기 전후에 이것을 보았다고 생각합니다.

업데이트 : 더 좋습니다 python -m pip install <package>. 이것의 장점은 패키지를 원하는 특정 버전의 파이썬을 실행하기 때문에 pip는 패키지를 "올바른"파이썬에 분명히 설치한다는 것입니다. 다시 하지 않는 당신은 (원치 않는) 루트 권한으로 가능성이 올바른 위치에서 패키지를 얻을,하지만 ...이 경우는 sudo를 사용합니다.


1
또는 sudo의 -H 플래그를 사용할 수 있습니다
Graydyn Young

21

파이썬 경로 문제입니다.

제 경우에는 다음에 파이썬이 설치되어 있습니다.

/Library/Frameworks/Python.framework/Versions/2.6/bin/python,

python2.6에는 사이트 패키지 디렉토리가 없습니다.

pip로 설치 한 패키지 (SOAPpy)가 있습니다

/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/

그리고 사이트 패키지는 파이썬 경로에 있지 않습니다 .PYTHONPATH에 사이트 패키지를 영구적으로 추가하기 만하면됩니다.

  1. 터미널을여십시오
  2. open .bash_profile을 입력하십시오.
  3. 나타나는 텍스트 파일에서 끝에 다음 줄을 추가하십시오.

    내보내기 PYTHONPATH = $ PYTHONPATH : /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/

  4. 파일을 저장하고 터미널을 다시 시작하면 완료

이것은 Jenkins가 셀레늄 파이썬으로 작업하는 데 도움이되었습니다.
edst

이것은 배쉬 스크립트가 내 셀러리 스크립트를 호출했을 때 관리자를 통해 셀러리를 실행하는 데 효과적이었습니다. 셀러리 스크립트가 이미 설치된 모듈을 내 pip에 가져올 수 없습니다. 정말 감사합니다.
Shivam Sharma

참고 : 가져 오기 오류의 또 다른 가능성은 컴퓨터에 여러 버전의 Python이 설치되어 있다는 것입니다. 예를 들어, 시스템의 Python과 Miniconda 또는 Anaconda 중 하나입니다. 따라서 항상 올바른 해당 "pip"를 사용하십시오.
Sanchit

8

파이썬 가져 오기 메커니즘은 실제로 작동합니다.

  1. 귀하의 PYTHONPATH가 잘못되었습니다.
  2. 라이브러리가 생각한 곳에 설치되지 않았습니다
  3. 이 이름을 마스킹하는 동일한 이름의 다른 라이브러리가 있습니다.

1
이 경우 옵션 3이 될 수 없습니다. ImportError가 발생하지 않습니다.
Martijn Pieters

2
아마 2? 나는 그것이 왜이 라이브러리 하나에 잘못된 장소에 설치되는지 알지 못합니다. 대부분의 다른 라이브러리는 괜찮습니다.
roy

3
옵션 4 : 당신의 PYTHONPATH가 옳고, 당신이 원하는 곳에 라이브러리가 있고, 이것을 가리는 라이브러리가 없습니다 ... 그러나 sudo pip install루트 priv와 함께 설치되어 왔기 때문에 가져 오기 시간에 무언가 부족한 폭탄이 있습니다 읽기 또는 쓰기 권한.
Dan H

2
@MartijnPieters : "from <package> import <foo>"형식의 가져 오기가 있고 방해하는 패키지에 "foo"가 없으면 옵션 3에 대한 가져 오기 오류가 발생합니다.
Dan H

@DanH는 확실하지만 OP가 사용하는 형식이 아닙니다.
Martijn Pieters

8

젊은 힙턴 인턴 이 모듈 디렉토리 내부의 "python setup.py install"에 대한 비밀을 밝힐 때까지 모니터에 대해 머리를 두드리고 있습니다.

어떤 이유로 든 거기에서 설치 프로그램을 실행하면 작동합니다.

명확하게 말하면 모듈 이름이 "foo"인 경우 :

[burnc7 (2016-06-21 15:28:49) git]# ls -l
total 1
drwxr-xr-x 7 root root  118 Jun 21 15:22 foo
[burnc7 (2016-06-21 15:28:51) git]# cd foo
[burnc7 (2016-06-21 15:28:53) foo]# ls -l
total 2
drwxr-xr-x 2 root root   93 Jun 21 15:23 foo
-rw-r--r-- 1 root root  416 May 31 12:26 setup.py
[burnc7 (2016-06-21 15:28:54) foo]# python setup.py install
<--snip-->

다른 디렉토리에서 경로를 호출하여 setup.py를 실행하려고하면 설치가 중단됩니다.

작동하지 않습니다 :

python /root/foo/setup.py install

작동합니다 :

cd /root/foo
python setup.py install

7

결합 된 접근 방식 으로이 문제를 해결할 수있었습니다. 먼저 Chris의 조언에 따라 명령 줄을 열고 'pip show packagename'을 입력했습니다. 설치된 패키지의 위치가 제공되었습니다.

다음으로 파이썬을 열고 'import sys'를 입력 한 다음 'sys.path'를 입력하여 파이썬이 가져온 패키지를 검색하는 위치를 보여줍니다. 아아, 첫 번째 단계에서 표시된 위치가 목록에 없었습니다.

마지막 단계에서는 'sys.path.append ('package_location_seen_in_step_1 ')을 입력했습니다. 선택적으로 2 단계를 반복하여 현재 위치가 목록에 있는지 확인할 수 있습니다.

테스트 단계, 패키지를 다시 가져 오십시오. 작동합니다.

단점은? 일시적이므로 매번 목록에 추가해야합니다.


5

통해 설치 한 키링을 사용하는 동안이 문제가 발생했습니다 sudo pip install keyring. 다른 답변에서 언급했듯이 제 경우에는 권한 문제입니다.

나를 위해 일한 것 :

  1. 제거 된 키링 :
    • sudo pip uninstall keyring
  2. sudo의 -H옵션을 사용하고 키 링을 다시 설치했습니다.
    • sudo -H pip install keyring

도움이 되었기를 바랍니다.


3

나는 파이썬을 처음 사용합니다. 프로젝트 인터프리터 경로를 변경 하여이 문제를 해결했습니다.
File -> Settings -> Project -> Project Interpreter


어디에서 IDE 또는 ???
Christopher Kikoti

2

PYTHONPATH가 제대로 작동하지 못했습니다. 추가 export문제를 해결했습니다.

(한 일)

export PYTHONPATH=$PYTHONPATH:~/test/site-packages

vs.

(작동하지 않았다)

PYTHONPATH=$PYTHONPATH:~/test/site-packages

2

내 경우에는 달리고 통역사 pip install Django==1.11에서 가져 오지 않았습니다 python.

pip 명령을 탐색 pip show하면 다음과 같은 결과 가 나타납니다 .

> pip show Django
Name: Django
Version: 1.11
...
Location: /usr/lib/python3.4/site-packages
...

위치에 '3.4'라고 표시되어 있습니다. 나는 것을 발견 python- 명령이 연결되었다python2.7

/usr/bin> ls -l python
lrwxrwxrwx 1 root root 9 Mar 14 15:48 python -> python2.7

바로 옆에 링크를 찾았습니다 python3. 링크를 (으)로 변경할 수도 있습니다 python3.4. 그것도 고칠 것입니다.


1

필자의 경우 모듈에 init .py 파일 이 누락 되어 Python 2.7 환경으로 가져 오려는 문제가있었습니다.

Python 3.3 이상에는 init .py 파일 없이 패키지를 만들 수있는 암시 적 네임 스페이스 패키지가 있습니다.


1

언급 된 다른 답변으로 문제가 해결되지 않으면 pip 캐시를 삭제하고 패키지를 다시 설치하십시오. 내 컴퓨터는 Ubuntu14.04를 실행하며 아래에 ~/.cache/pip있습니다. 이 폴더를 삭제하면 나에게 속임수가되었습니다.


1

또한, 당신이 혼동하지 않도록하기 pip3pip. 내가 찾은 것은 설치된 패키지 pip가 작동하지 않으며 python3그 반대도 마찬가지입니다.


0

당신이를 통해 설치하는 경우 easy_install또는 pip, 그것은 성공적으로 완료된다? 전체 출력은 무엇입니까? 어떤 파이썬 설치를 사용하고 있습니까? sudo시스템 디렉토리에 모듈을 설치하는 경우 (시스템 파이썬 설치를 사용하는 경우) 설치 명령 전에 사용해야 합니다. 질문에 유용한 유용한 정보가 많지 않지만 다음과 같은 도구가 도움이 될 것입니다.

  • echo $PYTHONPATH및 / 또는 echo $PATH: 모듈을 가져올 때 Python은 원하는 환경 변수 (디렉토리 목록, :구분 목록) 중 하나를 검색 합니다. 가져 오기 문제는 종종 올바른 디렉토리가이 목록에 없기 때문에 발생합니다.

  • which python, which pip또는 which easy_install: 각 실행 파일의 위치를 ​​알려줍니다. 아는 것이 도움이 될 수 있습니다.

  • @JesseBriggs가 제안한 것처럼 virtualenv를 사용하십시오 . 그것은 매우 잘 작동 pip하면 분리하고 별도의 파이썬 프로젝트 모듈 및 환경을 관리하는 데 도움이.


0

나는이 정확한 문제가 있었지만 위의 답변 중 어느 것도 효과가 없었다. 부모 프로젝트에서 가져온 후 sys.path가 다르다는 것을 알 때까지 미치게되었습니다. 프로젝트 계층 구조에없는 파일을 가져 오기 위해 importlib을 사용하여 약간의 함수를 작성 한 것으로 나타났습니다. 나쁜 생각 : 내가 한 짓을 잊었다. 더 나쁜 것은 가져 오기 프로세스가 sys.path와 충돌하여 그대로 두었습니다. 아주 나쁜 생각입니다.

해결책은 그것을 막고 프로젝트로 가져 오는 데 필요한 파일을 넣는 것입니다. 또 다른 방법은 파일을 수시로 재 빌드해야하므로 파일을 자체 프로젝트에 저장하는 것이 었으며 재 구축은 기본 프로젝트의 재 구축과 일치하거나 일치하지 않을 수 있습니다.


0

Python-Telegram-Bot으로 텔레 그램 봇을 테스트하려는 시스템에 2.7 및 3.5가 설치되어 있어이 문제가 발생했습니다 .

sudo를 사용하거나 사용하지 않고 pip 및 pip3으로 설치 한 후 작동하지 못했습니다. 나는 항상 얻었다 :

Traceback (most recent call last):
  File "telegram.py", line 2, in <module>
    from telegram.ext import Updater
  File "$USER/telegram.py", line 2, in <module>
    from telegram.ext import Updater
ImportError: No module named 'telegram.ext'; 'telegram' is not a package

오류 메시지를 올바르게 읽으면 파이썬이 현재 디렉토리에서를 찾고 있음을 나타냅니다 telegram.py. 그리고 오른쪽에 telegram.py라는 스크립트가 있으며 이것은 전화했을 때 파이썬에 의해로드되었습니다 import.

결론, package.py가져 오려고 할 때 현재 작업중인 디렉토리 가 없는지 확인하십시오 . (그리고 오류 메시지를 자세히 읽으십시오).


0

나는 비슷한 문제 (Windows에서)를 가지고 있었고 내 경우의 근본 원인은 ANTIVIRUS 소프트웨어 였습니다 ! 실행중인 프로세스를 가상 머신으로 래핑하는 "자동 포함"기능이 있습니다. 증상은 다음과 같습니다. pip install somemodule하나의 cmd-line 창에서 제대로 작동 import somemodule하며 다른 프로세스에서 오류가 발생하면 실패합니다.

ModuleNotFoundError: No module named 'somemodule'

누군가에게 시간을 절약하기를 바랍니다. :)


0

어쩌면 약간의 주제가 아닐 수도 있지만에 문제가 import PyYAML있습니다. 당신이 필요로 지적했다 import yaml. (이것은 고전적인 RTFM입니다 ...)


0

장고를 사용하는 것과 비슷한 문제가있었습니다. 필자의 경우 Django 셸에서 모듈을 가져올 수는 있지만 모듈을 가져온 .py에서는 가져올 수 없습니다.
문제는 다른 virtualenv 에서 Django 서버를 실행했기 때문에 (.py를 실행) 모듈이 설치된 에서 입니다.

대신, 쉘 인스턴스가 올바른 virtualenv에서 실행되었습니다. 따라서 왜 효과가 있었습니까?


0

이 작동합니다!

이 문제는 모듈이 이전 버전의 Python 또는 다른 디렉토리에 설치 될 때 발생하며 솔루션이 간단하기 때문에 걱정할 필요가 없습니다. -모듈이 설치된 디렉토리에서 모듈을 가져옵니다. 먼저 파이썬 sys모듈을 가져온 다음 모듈이 설치된 경로에서 가져옵니다.

import sys
sys.path.append("directory in which module is installed")

import <module_name>

0

가능한 사례의 대부분은 이미 사례로 공유되어 솔루션으로 다루어졌으며 한 환경에 패키지를 설치하고 (예 X:) 다른 환경에 패키지를 가져 오는 경우 (예 :)가 발생했습니다 Y. 따라서 항상 패키지를 설치 한 환경에서 패키지를 가져와야합니다.


0

나를 위해 일한 것은 다음과 같습니다.

python -m pip install -user {package name}

이 명령에는 sudo가 필요하지 않습니다. 이것은 OSX Mojave에서 테스트되었습니다.


0

제 경우에는 수퍼 유저를위한 모듈도 설치해야했습니다.

sudo su
pip install <module>

명백히 superuse는 특정 상황에서 일반 사용자 파일에 액세스 할 수 없습니다.


0

나를 위해 그것은 내가 사용하고있는 파이썬 버전과 일치하는 모듈 버전을 보장하는 것이 었습니다. 나는 파이썬 3.6 과 함께 상자에 이미지를 구축 한 다음 3.7을 설치 한 Docker 이미지에 주입 한 다음 내 머리를 부딪 혔습니다. 파이썬이 모듈이 설치되지 않았다고 말했을 때 ...

36m 파이썬 3.6 bsonnumpy.cpython-36m-x86_64-linux-gnu.so

37m 파이썬 3.7 bsonnumpy.cpython-37m-x86_64-linux-gnu.so


pip install사용중인 Python 버전과 일치하는 버전. python --version
streetster

python --version은 다음을 제공합니다. Python 3.7.7 및 패키지가 pip show와 함께 설치된 위치를 확인하면 librosa가 제공합니다. 위치 : /home/ec2-user/anaconda3/lib/python3.7/site-packages는 패키지가 올바른 위치에 있음을 의미하지만 패키지를 가져올 때 다음을 제공합니다. 모듈 이름 없음 : AWS Sagemaker env에서 작업하고 있습니다. Pytorch_p36
Walid Bousseta

아마도 pytorch_p37을 사용하고 싶습니까?
streetster

pytorch_p37은 없습니다
Walid Bousseta

0

나는 이것이 오래된 오래된 게시물이라는 것을 알고 있지만 32 비트 파이썬과 64 비트 파이썬이 설치되어있는 데 문제가있었습니다. 32 비트 파이썬을 제거하면 모든 것이 정상적으로 작동했습니다.


0

하나의 프로젝트 (A)에서 동일한 라이브러리가 제대로 작동했지만 다른 프로젝트 (B)에서 동일한 라이브러리를 가져 오면 오류가 발생한다는 문제를 해결했습니다. Windows OS에서 Pycharm을 IDE로 사용하고 있습니다. 따라서 많은 잠재적 솔루션을 시도하고 문제를 해결하지 못한 후 다음 두 가지 작업을 수행했습니다 ( "Venv"폴더 삭제 및 인터프리터 재구성).

1- 프로젝트 (B)에는 External Libraries /에 위치한 ( "venv")라는 폴더가있었습니다. 해당 폴더를 삭제했습니다.

2 단계 1 ( "venv"폴더 삭제)이 Python 인터프리터 구성에서 오류를 발생시키고 화면 상단에 "프로젝트에 대해 잘못된 Python 인터프리터가 선택되었습니다"및 "Python 인터프리터 구성"이라는 메시지가 표시되면 해당 링크를 선택하십시오. 새 창을 엽니 다. "프로젝트 통역사"드롭 다운 목록에 이전의 유효하지 않은 통역사를 보여주는 빨간색 선이 있습니다. 이제이 목록을 열고 Python 인터프리터를 선택하십시오 (필자의 경우 Python 3.7입니다). 하단의 "적용"및 "확인"을 누르면 계속 진행할 수 있습니다.

참고 : 내 프로젝트 (B)의 가상 환경이 이미 설치되어 작동중인 라이브러리를 인식하지 못하는 문제 일 수 있습니다.


0

가상 환경을 사용하는 경우 pipenv install <module name> 하는 대신pip install <module name>

나를 위해 일했다.


pipenv를 찾을 수 없음
Walid Bousseta

0

이 문제도있었습니다 .. 패키지는 Python 3.8.0에 설치되었지만 VS Code는 이전 버전 (3.4)을 사용하여 스크립트를 실행했습니다.

터미널에서 수정 :

py .py

올바른 Python 버전에 패키지를 설치하고 있는지 확인하십시오


0

친구가 오늘 나를 위해했던 것처럼 여기에 도움이 된 것이 있습니다 (Windows를 사용하고 있습니다).

'설정'-> '프로젝트'-> '프로젝트 해석기'를 누르십시오. 여기 오른쪽 창에 'Project Interpreter'라는 제목이 표시된 줄이 있습니다. 이 줄을 클릭하면 몇 개의 추가 줄이 열립니다.

이제 '모두 표시'줄을 누르십시오. 창이 열립니다. 이 창에서 오른쪽 상단 모서리에있는 작은 '+'기호를 누르십시오.

새로운 창이 열립니다. 왼쪽에는 4 개의 탭이 있으며 가장 높은 탭을 누르면 'Virtualenv Environment'가 표시됩니다. 이제 오른쪽 창에서 '기존 환경'옵션을 표시하십시오. '통역사'행이 잘 보이게됩니다. 줄 오른쪽에있는 '...'버튼을 누르십시오.

이제 브라우징 창이 열립니다. Python 자체를 설치 한 디렉토리 로 이동 하십시오 . PyCharm을 가진 사람은 아닙니다. 도착하면 'python.exe'파일을 선택하고 확인을 누르십시오 (창이 사라짐).

다시 확인을 누릅니다 (이 창이 사라집니다).

이제이 창에서 생성 한 새 줄이 표시되어 있는지 확인하고 확인을 다시 누릅니다.

이제 설치된 모든 패키지가 프로젝트 인터프리터에 표시되고 프로그램에서 읽습니다.


0

이 스레드에서 언급되지 않은 가장 효과적인 해결책은 다음과 같습니다.

여러 버전의 Python이 설치되어 있지만 Python3.7을 사용하려고했기 때문에 다음을 사용해야했습니다.

sudo pip3.7 install <package>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.