关于python:在OSX上使用pip安装模块,但在导入时找不到

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

我使用PIP成功地安装了不同的模块,它们显示在

1
pip list

例如:

1
2
3
beautifulsoup4 (4.4.1)
requests (2.10.0)
Scrapy (1.1.0)

号从终端

但是,每当我试图导入它时

import beautifulsoup4/import bs4import Scrapyimport requests

显示以下错误:

1
2
3
4
5
6
7
8
$ 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

1
2
3
4
5
6
7
$ 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。例如,它包含

1
2
import requests
from bs4 import BeautifulSoup

当我尝试的时候

1
python file.py

我也有同样的错误。

接近

列表中的任何其他模块也会发生同样的情况。我认为pip将它们安装在python没有读取的目录中,但是根据我所读的,它是正确的目录。

它们都安装在这里:

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

Padraic Cunningham请求的输出:

1
2
3
4
5
$ which -a pip
/usr/local/bin/pip
$ which -a python
/usr/bin/python
/usr/local/bin/python

leovp请求的输出:

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

。线程已检查

我已经检查了以下线程,但不幸的是它们没有帮助我解决问题:

  • 使用pip安装pyside-找不到make
  • pip安装但找不到模块=>可能提供了正确的答案,但给定的链接不再有效
  • 已安装google.protobuf,但找不到模块
  • 未找到python pip安装模块。如何将python链接到pip位置?
  • 小精灵

    有什么问题吗?


    这里的答案是有效的,这基本上是在问题的评论中解释的。然而,我认为把它解释成一个清晰、结构良好的答案是有用的。

    如前所述,问题是我没有使用PIP安装的解释器。命令which显示了PIP安装模块的位置:

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

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

    1
    2
    3
    $ which -a python
    /usr/bin/python
    /usr/local/bin/python

    也就是说,我的系统/默认python是

    1
    /usr/bin/python

    当pip为安装

    1
    /usr/local/bin/python

    因此,我不能导入我刚键入python时安装的任何内容,因为/usr/bin/python解释器是启动的解释器。

    解决方案

    再次安装pip,指定将要安装的模块的目标。这必须是system/default python的目标。

    这分为两个步骤:

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

    埃多克斯1〔6〕

  • 注意,如果没有sudo,我会出错,无法安装pip。


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

    为了提供一些背景,我通过执行brew install python安装了piphomebrew。执行此命令的一个缺点是,它将同时安装python2和python3(在某些情况下可能不是缺点),然后

    江户十一〔11〕。

    但当我试着去见import scrapy时,它抱怨ImportError: No module named scrapy

    我的解决方案:运行brew doctor,应该报告你一个链接断了,它要求你运行brew link python,你可能会遇到一些错误,但按照提示建议继续前进,成功执行brew link python后,一切都应该正常。


    由于您的问题可能是由各种原因引起的,我在这里列出了其中的一些问题:

    • 这可能是因为这里曾经说过:PIP安装,但找不到模块。已用更新的链接更新了答案。
    • 小精灵

      您要查找的链接:https://pythonhosted.org/setuptools/setuptools.html开发模式

      • 如果安装了两个版本的python,也可能发生这种情况。如果您正在访问的pip是一个版本,则使用的python解释器是另一个版本。
      • 小精灵

        所以请注意,您使用的是相同版本的python来安装和使用这个包。

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

        首先,设置shell别名:

        1
        alias python=/usr/local/bin/python3

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

        • 如果上述两种方法都不适用于您,请检查:
        • 小精灵

          importError没有名为或此的模块


          我在添加这个以防它帮助其他人。对我来说,问题是我运行的是Python,而pip3安装到的目录与Python链接的目录不同。修复此运行conda deactivate。你可以稍后使用conda activate重新激活


          在终端运行brew doctor。它应该警告您:

          1
          2
          3
          4
          5
          6
          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并再次尝试导入模块。