[英]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 bs4
或import Scrapy
或import 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。
如果我將 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 的目標。
這分兩步完成:
從bootstrap.pypa.io/get-pip.py下載get-pip.py
。 (您可能需要為 Python 2 使用已棄用的一個: bootstrap.pypa.io/2.7/get-pip.py )
使用以下命令安裝它
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
pip
是一個版本並且使用的 python 解釋器是另一個版本。因此,請確保您使用相同版本的 python 來安裝和使用該軟件包。
您可以使用別名解決此問題,
首先,設置一個shell別名:
alias python=/usr/local/bin/python3
然后,在提示符下輸入,或將其放入~/.bashrc
這樣無論何時從終端打開 python 都會打開正確的版本。
我添加這個以防它幫助其他人。 對我來說,問題是我正在運行 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.