模块在OSX上使用pip安装,但在导入时未找到

时间:2016-05-20 08:23:30

标签: python macos python-2.7 import module

我使用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

更新:如果我在正确的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

如果我在某个本地文件夹中保存了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)

已检查线程

我检查了以下主题,但不幸的是他们没有帮我解决问题:

关于问题是什么的任何想法?

6 个答案:

答案 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的目标。

这已经分两步完成了:

  1. bootstrap.pypa.io/get-pip.py下载get-pip.py
  2. 使用以下命令安装

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

  3. 请注意,如果没有sudo我收到了错误,并且无法安装pip。

答案 1 :(得分:5)

我刚刚解决了类似的问题。

为了给出一些背景知识,我通过执行piphomebrew一起安装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

  • 如果您安装了两个版本的python ,也可能会发生这种情况。如果您访问的pip是一个版本&amp;使用的python解释器是另一个。

因此,请注意您使用相同版本的python来安装和使用该软件包。

您可以使用别名修复此问题,

首先,设置一个shell别名:

alias python=/usr/local/bin/python3

然后,在提示符下输入,或者将其放在~/.bashrc中,这样无论何时从终端打开python,都会打开正确的版本。

  • 如果上述两种方法都不适合您,请检查:

ImportError No module namedthis

答案 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访问已安装的软件包