簡體   English   中英

在 OSX 上使用 pip 安裝模塊,但在導入時未找到

[英]Modules are installed using pip on OSX but not found when importing

我使用 pip 成功安裝了不同的模塊,它們顯示在

pip list

如:

beautifulsoup4 (4.4.1)
requests (2.10.0)
Scrapy (1.1.0)

從航站樓

但是,每當我嘗試導入它時

import beautifulsoup4 / import bs4import Scrapyimport requests

顯示以下錯誤:

$ python
Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named requests

更新:如果我在正確的站點包目錄中啟動 python

$ pwd
/usr/local/lib/python2.7/site-packages
$ python
Python 2.7.5 (default, Mar  9 2014, 22:15:05)
>>> import requests
>>> import bs4
>>> import scrapy

然后就可以了。 如果直接在終端上寫入,這將解決問題。 但是,我不知道如何讓它在 file.py 中工作,這將是正常使用。

據我所知,我只安裝了Python2.7。

來自文件.py

如果我將 file.py 保存在某個本地文件夾中。 這包含,例如

import requests
from bs4 import BeautifulSoup

當我嘗試

python file.py

我犯了同樣的錯誤。

方法

列表中的任何其他模塊也會發生同樣的情況。 我認為 pip 正在將它們安裝在 Python 未讀取的目錄中,但根據我的閱讀,它是正確的。

它們都安裝在這里:

/usr/local/lib/python2.7/site-packages

Padraic Cunningham 要求的 Output:

$ which -a pip
/usr/local/bin/pip
$ which -a python
/usr/bin/python
/usr/local/bin/python

leovp 請求的 Output:

$ pip -V
pip 8.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)

線程已經檢查

我檢查了以下線程,但不幸的是它們沒有幫助我解決問題:

關於問題是什么的任何想法?

這是有效的答案,這基本上是問題評論中已解釋的內容。 但是,我認為將其解釋為清晰且結構良好的答案會很有用。

正如所強調的,問題是我沒有使用 pip 安裝的解釋器。 命令which示出PIP被安裝模塊:

$ which -a pip
/usr/local/bin/pip

以及不同的python版本所在的位置:

$ which -a python
/usr/bin/python
/usr/local/bin/python

也就是說,我的系統/默認 python 是

/usr/bin/python

當 pip 正在安裝時

/usr/local/bin/python

因此,當我輸入python時,我無法導入我安裝的任何東西,因為/usr/bin/python解釋器是啟動的。

解決方案

再次安裝 pip指定將安裝的模塊的目的地。 這必須是系統/默認 python 的目標。

這分兩步完成:

  1. bootstrap.pypa.io/get-pip.py下載get-pip.py (您可能需要為 Python 2 使用已棄用的一個: bootstrap.pypa.io/2.7/get-pip.py

  2. 使用以下命令安裝它

    sudo /usr/bin/python get-pip.py

請注意,如果沒有sudo我會出錯並且無法安裝 pip。

我剛剛修復了一個類似的問題。

為了提供一些背景知識,我通過執行brew install python使用homebrew安裝pip 執行此命令的一個缺點是,它會同時安裝 python2 和 python3(在某些情況下可能不是缺點),然后

pip install scrapy

但是當我嘗試import scrapy ,它抱怨ImportError: No module named scrapy


我的解決方案:運行brew doctor ,它應該報告您鏈接已損壞,它要求您運行brew link python ,您可能會遇到一些錯誤,但按照提示繼續前進,成功執行brew link python ,一切正常現在。

由於您的問題可能是由於各種原因引起的,我在這里列出了其中的一些:

您正在尋找的鏈接: https : //pythonhosted.org/setuptools/setuptools.html#development-mode

  • 如果您安裝了兩個版本的 python ,也可能會發生這種情況。 如果您訪問的pip是一個版本並且使用的 python 解釋器是另一個版本。

因此,請確保您使用相同版本的 python 來安裝和使用該軟件包。

您可以使用別名解決此問題,

首先,設置一個shell別名:

alias python=/usr/local/bin/python3

然后,在提示符下輸入,或將其放入~/.bashrc這樣無論何時從終端打開 python 都會打開正確的版本。

  • 如果上述兩種方法都不適合您,請檢查以下內容:

ImportError No module named or this

我添加這個以防它幫助其他人。 對我來說,問題是我正在運行 Anaconda 並且 pip3 安裝到與 Anaconda 鏈接的目錄不同的目錄中。 要解決此問題,請運行conda deactivate 您可以稍后使用conda activate重新conda activate

我能夠通過運行來解決這個問題:

$ brew doctor 

並得到以下內容:

考慮設置您的 PATH 以便/usr/local/bin出現在/usr/bin之前。

這是一個單行:

echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile

一旦我運行了 one-liner,我就可以從/usr/local/bin訪問已安裝的包

在我的例子中,我將 VSCode 解釋器更改為 ~/opt/anaconda3/bin/python。 這解決了這個問題。

在終端中運行brew doctor它應該會給你一個警告說:

Warning: The following directories do not exist:
/usr/local/sbin

You should create these directories and change their ownership to your account.
  sudo mkdir -p /usr/local/sbin
  sudo chown -R $(whoami) /usr/local/sbin

在終端中輸入sudo mkdir -p /usr/local/sbin並按回車鍵,然后輸入sudo chown -R $(whoami) /usr/local/sbin然后運行 ​​python 並再次嘗試導入您的模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM