52

我是新手,我的项目需要 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 顺便说一句,因为我使用自制软件安装它,如教程中所述。

然后我尝试安装 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 为什么我无法在使用 pip 和/或 easy_install 安装后使用 python 2.7 在 mac 上导入 beautifulsoup?

但他们俩都和我一样。我不明白为什么会这样,因为我用以下内容编辑了我的 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

然后安装 homebrew,然后通过 homebrew 安装 python 2.7.3(2.7.3 现在正在我的机器上运行)

我认为所有 pip 安装都会正确链接?

4

12 回答 12

59

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

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

对于 Python 2.7

于 2013-02-24T13:49:25.567 回答
33

这是我在安装了多个版本的 Python 后长时间遇到 pip 问题后学到的东西(尤其适用于可能使用 brew 安装 python blends 的 OS X 用户。)

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

#!/bin/env python

您可能会惊讶地发现,这不一定与您从命令行运行的 python 相同>python

为确保您使用正确的 pip 实例为您的 python 解释器安装包,您需要运行以下命令:

>/bin/env python -m pip install --upgrade mymodule
于 2015-05-14T16:48:24.977 回答
9

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

问候。

于 2013-09-13T22:09:41.940 回答
9

没有其他解决方案对我有用,所以我尝试了:

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

这为我解决了这个问题。你的旅费可能会改变。

于 2016-03-03T20:35:12.713 回答
3

为了任何人都在 Windows 环境中使用 Visual Studio:

我意识到当我运行 pip install 时我可以看到我的模块已安装

py pip install [moduleName] 
py pip list

然而,在 Visual Studio 中调试时出现“找不到模块”。import [moduleName]奇怪的是,当我在 powershell 中运行解释器时,我成功运行了。

原因:

visual studio 在以下位置使用了错误的解释器: C:\Users\[username]\AppData\Local\Programs\Python\Python37\

我真正想要的是 Visual Studio 使用我为我的项目设置的 virtualenv。为此,请在“解决方案资源管理器”中右键单击 Python 环境,选择添加虚拟环境...,然后选择您创建虚拟环境的文件夹。 在此处输入图像描述 然后,在项目设置下的常规选项卡下,在下拉列表中选择您的虚拟环境。

在此处输入图像描述

现在视觉工作室应该使用相同的解释器,一切都应该很好!

于 2019-07-30T00:29:25.657 回答
2

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

解决步骤:

  1. 使用默认环境打开一个新终端并找到 和 的二进制pip文件python
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_1在这里,您可以看到版本和3.7.2我的情况之间明显不匹配。

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

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

这应该够了吧。

于 2019-04-14T08:49:56.237 回答
1

以下步骤帮助我解决了这个问题。

  • 升级pip版本
  • 使用命令删除创建的环境rm -rf env-name
  • 使用命令创建环境python3 -m venv env-aide
  • 现在安装软件包并检查
于 2019-07-31T07:14:16.637 回答
0

我有一个相同的问题,我可以追溯到移动包含我的虚拟环境的目录。我只是在很久以后才注意到它,因为我没有使用存在于环境本身中的库。

似乎在构造时,虚拟环境设置了一个VIRTUAL_ENV包含自身路径的变量,该变量显然PATH是在激活环境时附加的;这在手动移动时不会更新,这意味着更改环境的位置会破坏指向它包含的库​​的链接。

我只是通过删除和重新创建我的环境来解决问题。

于 2022-03-02T16:49:39.997 回答
-1

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

尝试运行 rm ~/.pydistutils.cfg

于 2016-04-30T11:12:07.447 回答
-1

确保检查您正在使用的 python 版本,如果它是 2,那么只有 pip install 有效 如果它是 3。那么一定要使用 pip3 install

于 2020-03-02T16:31:42.283 回答
-1

对我有用的(使用 Python 3.8)是:

  1. 卸载旧 python 版本的剩余部分(不知何故安装了 3 个不同的,但从未注意到)
  2. 将 pip 升级到最新版本
  3. 删除并重新安装模块

这可以避免 pip 将包安装到您和您的 IDE 不使用的版本。

于 2021-04-12T08:49:03.480 回答
-2

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

于 2013-02-24T13:58:02.863 回答