我使用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
更新:如果我在正确的site-packages目录下启动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要求的输出:
$ which -a pip
/usr/local/bin/pip
$ which -a python
/usr/bin/python
/usr/local/bin/python
leovp要求的输出:
$ pip -V
pip 8.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)
我检查了以下主题,但不幸的是他们没有帮我解决问题:
关于问题是什么的任何想法?
答案 0 :(得分:11)
这里的答案有效,这基本上是在问题的评论中解释的。但是,我认为将其解释为清晰且结构合理的答案会很有用。
正如强调的那样,问题是我没有使用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 ,指定将要安装的模块的目标。这必须是system / default python的目标。
这已经分两步完成了:
get-pip.py
使用以下命令安装
sudo /usr/bin/python get-pip.py
请注意,如果没有sudo
我收到了错误,并且无法安装pip。
答案 1 :(得分:5)
我刚刚解决了类似的问题。
为了给出一些背景知识,我通过执行pip
与homebrew
一起安装brew install python
。执行此命令的一个缺点是,它将安装python2和python3(在某些情况下可能不是一个缺点),然后
pip install scrapy
但是当我尝试import scrapy
时,它抱怨ImportError: No module named scrapy
。
我的解决方案:
运行brew doctor
,它应该报告链接已损坏,它要求您运行brew link python
,您可能会遇到一些错误,但在成功执行brew link python
后按照提示建议继续前进,现在一切都应该有效。
答案 2 :(得分:4)
由于各种原因可能导致您的问题,我在此列出了一些问题:
您要查找的链接:https://pythonhosted.org/setuptools/setuptools.html#development-mode
pip
是一个版本&amp;使用的python解释器是另一个。因此,请注意您使用相同版本的python来安装和使用该软件包。
您可以使用别名修复此问题,
首先,设置一个shell别名:
alias python=/usr/local/bin/python3
然后,在提示符下输入,或者将其放在~/.bashrc
中,这样无论何时从终端打开python,都会打开正确的版本。
答案 3 :(得分:0)
在终端中运行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
,然后按Enter
然后输入sudo chown -R $(whoami) /usr/local/sbin
然后运行python并尝试再次导入模块。
答案 4 :(得分:0)
我添加此内容是为了帮助其他人。对我来说,问题是我正在运行Anaconda,而pip3安装到与Anaconda链接的目录不同的目录。要解决此问题,请运行conda deactivate
。您以后可以使用conda activate
答案 5 :(得分:0)
我能够通过运行以下方法解决此问题:
$ brew doctor
并获得以下信息:
请考虑设置PATH,以使
/usr/local/bin
出现在/usr/bin
之前。这里是单线:
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile
运行单行代码后,便可以从/usr/local/bin
访问已安装的软件包