找不到Python pip安装模块。如何将python链接到pip位置?

问题描述 投票:26回答:7

我是新手,我需要pySerial和feedparser模块用于我的项目。我正在跑山狮。

我按照以下教程,以便我可以升级到python 2.7.3,然后使用上面提到的模块。

http://hackercodex.com/guide/python-virtualenv-on-mac-osx-mountain-lion-10.8/

我按照本教程直到我安装了pip。而不是安装Virtualenv。我使用以下命令安装pySerial和feedparser

$ pip install pySerial
Requirement already satisfied (use --upgrade to upgrade): pySerial in /Library/Python/2.7/site-packages
Cleaning up...

我认为这已经存在并检查了它。 Python似乎正在导入这个很好。我的python版本已经升级到2.7.3 btw,因为我使用本地教程中提到的自制软件安装它。

然后我尝试安装feedparser

$ pip install feedparser
Requirement already satisfied (use --upgrade to upgrade): feedparser in /usr/local/lib/python2.7/site-packages
Cleaning up...

请注意它在usr / local / lib中的site-packages目录中的含义。

我的所有pip安装都安装在该目录中,但是当我尝试导入它时,python似乎没有把它们拿起来。

如何设置路径以便python也可以看到核心目录?

对你的帮助表示感谢。

我试着在这里寻找答案:Pip installs but module is not found Why I can't import beautifulsoup on mac using python 2.7 after installing it by using pip and/or easy_install?

但他们都没有和我一样。我不明白为什么会这样,因为我用以下内容编辑我的bash_profile

# Set architecture flags
export ARCHFLAGS="-arch x86_64"
# Ensure user-installed binaries take precedence
export PATH=/usr/local/share/python:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
# Load .bashrc if it exists
test -f ~/.bashrc && source ~/.bashrc

然后安装自制软件然后通过自制软件安装python 2.7.3(2.7.3现在正在我的机器上运行)

我想所有的pip安装都会正确链接?

python module path installation homebrew
7个回答
45
投票

作为一种快速解决方法,假设您使用的是类似bash的终端(Linux / OSX),您可以尝试导出PYTHONPATH环境变量:

export PYTHONPATH="${PYTHONPATH}:/usr/local/lib/python2.7/site-packages:/usr/lib/python2.7/site-packages"

对于Python 2.7


13
投票

这是我在长时间遇到pip问题后学到的东西,当我安装了几个版本的Python时(尤其对于可能使用brew来安装python混合的OS X用户有效。)

我假设大多数python开发人员在他们的脚本开头都有:

#!/bin/env python

你可能会惊讶地发现这不一定是你从命令行>python运行的那个python

为了确保使用python解释器的正确pip实例安装软件包,您需要运行以下内容:

>/bin/env python -m pip install --upgrade mymodule

8
投票

我也有这个问题。我注意到/usr/local/lib/python2.7/dist-packages/下的所有子目录和文件都没有对group和other的读或写权限,并且它们归root所有。这意味着只有root用户才能访问它们,因此任何试图运行使用任何这些模块的Python脚本的用户都会收到导入错误:

$ python
Python 2.7.3 (default, Apr 10 2013, 06:20:15) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import selenium
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named selenium
>>> 

我授予了对组和其他子目录的文件和搜索权限的读取权限,如下所示:

$ sudo chmod -R go+rX /usr/local/lib/python2.7/dist-packages

这解决了我的问题:

$ python
Python 2.7.3 (default, Apr 10 2013, 06:20:15) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import selenium
>>> 

我用pip安装了这些软件包(以root身份运行sudo)。我不确定为什么在没有授予读/读权限的情况下安装它们。这对我来说似乎是一个错误,或者可能在包配置中,但我对Python及其模块包装不太熟悉,所以我不确定。 FWIW,dist-packages下的所有软件包都有这个问题。无论如何,希望有所帮助。

问候。


5
投票

没有其他解决方案适合我,所以我试过:

pip uninstall <module> && pip install <module>

这解决了我。你的旅费可能会改变。


0
投票

你是如何安装easy_install / pip的?确保为python的升级版安装了它。这里可能发生的是旧的(默认)python安装可能链接到你的pip安装。您可能想尝试运行默认版本并导入新安装的模块。


0
投票

对我来说问题是我在文件pydistutils.cfg中有奇怪的配置设置

尝试运行 rm ~/.pydistutils.cfg


0
投票

如果您的pythonpip二进制文件来自不同版本,则使用pip安装的模块将无法用于python。

解决步骤:

  1. 打开一个带有默认环境的新终端,找到pippython的二进制文件。
readlink $(which pip)
../Cellar/python@2/2.7.15_1/bin/pip

readlink $(which python)
/usr/local/bin/python3      <-- another symlink

readlink /usr/local/bin/python3
../Cellar/python/3.7.2/bin/python3

在这里你可以看到我的情况下版本2.7.15_13.7.2之间明显不匹配。

  1. 将pip符号链接替换为与当前版本的python匹配的pip二进制文件。在以下命令中使用您的python版本。
ln -is /usr/local/Cellar/python/3.7.2/bin/pip3 $(which pip)

如果目标存在,-i标志会提示您覆盖。

这应该够了吧。

© www.soinside.com 2019 - 2024. All rights reserved.