繁体   English   中英

Python - 虽然已安装但未找到包

[英]Python - package not found although it is installed

我有以下版本的python

import sys
print(sys.version)

3.6.5 | packaged by conda-forge | (default, Apr  6 2018, 13:44:09) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]

我使用以下命令安装了一个包

pip install wfdb

它已成功安装,因为当我编写命令时:

pip show wfdb

出现以下信息位置:/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages

但是,当我在 Python notebook 中输入命令import wfdb或在终端中输入 python 版本时,我收到以下消息

No module named 'wfdb'

它与python检查包在哪里的路径有关吗? 如何检查这一点以及如何更改它?

您(至少)有 2 个 Python 安装,一个由 Anaconda 管理,另一个似乎是在系统范围内安装的官方 Python.org Mac 版本。 命令行上的pip命令是与 Python.org Mac 构建相关的命令。

pip是绑定到特定 Python 安装的脚本,并且可以在不同位置安装多个版本的脚本,并且通常还会安装pipXpipX.Y以匹配它所在 Python 版本的XY版本指示器拴。 对于 Python 3.6,这意味着相同的脚本也可用作pip3pip3.6 (这也意味着pip可以连接到 Python 2 或 Python 3,具体取决于您的确切操作系统设置。正如某些答案可能声称的那样,没有版本号的pip安装到 Python 2.x 中并不是给定的)。

请注意,当您在 shell 中运行没有路径的命令(例如pip而不是/usr/bin/pip )时,您是在要求 shell 在PATH列出的多个位置为您查找命令环境变量。 然后使用该命令修复PATH列表中的第一个位置。 which -a <command>会告诉您可以在其中找到命令的所有可能的PATH位置。您始终可以使用命令的完整路径来绕过PATH搜索路径。

您始终可以验证pip命令连接到的 Python 版本:

pip -V

这将输出pip的版本及其安装位置。 它会打印出类似的东西

pip pipX.pipY path/to/pythonX.Y/site-packages/pip (python X.Y)

其中pipX.pipY是 pip 版本号, path/to/pythonX.Y告诉您这是用于什么 Python 安装。

您可以尝试通过运行将其与 Python 版本匹配

python -m site

它输出该 Python 版本的 Python 模块搜索路径。 Python 也可以使用pythonpythonXpythonX.Y运行,并且受相同的PATH搜索约束。

请注意那里的-m开关,它指示 Python 在其模块搜索路径中查找模块并将其作为脚本执行。 大量模块支持以这种方式运行,包括pip 这很重要,因为如果您已经可以启动正确的 Python 版本,这有助于避免搜索更好的pip命令。

您有几个不错的选择:

  • 由于您使用的是 Anaconda,因此您可以为同一项目寻找 conda 包。 wfdb这样一个包 安装它

     conda install wfdb

    Anaconda 旨在为您提供更广泛的软件管理体验,其中包括比 Python PyPI 生态系统更广泛的软件选项集,并且 conda 包通常管理的不仅仅是 Python 包。

    Conda 包通常由与包本身不同的一组开发人员维护,因此 PyPI 上可能有比 Conda 更新的版本(需要pip install )。

    这不是所有 Python 包的选项,如果没有conda包,您必须使用pip 请参阅安装非 conda 包

  • 您可以使用conda命令来创建conda 环境 创建环境后,您可以使用以下命令激活它

     source activate <name_of_cenv>

    更改您的PATH设置。 在环境“活动”的情况下, PATH列出的第一个目录是 conda 环境的目录,而pip命令将是与该环境相关联的目录。

    请注意,conda 环境为特定项目提供了一个独立的环境,将库安装与中央site-packages位置中的其余 Python 包分开。 如果要为所有 Anaconda Python 项目安装一个包,请不要使用 conda 环境。

  • 使用 Anaconda Python 二进制文件将pip作为模块运行; 当您可以运行/path/to/pythonpythoncommand打开正确的 Python 版本时,您可以使用相同的路径运行/path/to/python -m pip ...而不是pip ...绝对确定您正在安装到正确的 Python 版本中。

  • 寻找更好的pip命令,使用which -a pipwhich -a pip3.6等。但是如果您已经知道 Python 二进制文件,请在相同的bin位置查找pip 如果您有anaconda/bin/python ,那么可能也有anaconda/bin/pip

正如你可以在这里阅读:

pip3 和 pip 只有在您不使用任何环境管理器(如 virualenv(或)conda)时才会有所作为。 现在,当您创建一个具有 python==3.x 的 conda 环境时,pip 将等同于 pip3。

出于这个原因,可能是您在安装所需的软件包和运行代码之前没有激活 Conda 环境。

激活新环境:

在 Windows 上:

activate myenv

在 macOS(这应该是您的选择)和 Linux 上:

source activate myenv

注意:将 myenv 替换为环境名称。

你已经安装了 python2.x 包并且你正在使用 python3.x。 尝试:

pip3 install wfdb

如果你没有pip3运行:

[apt-get/yum] install python3-pip

您可以通过运行以下命令查看当前安装了哪些软件包:

pip freeze

和 python 3.x 包

pip3 freeze

请记住,每次安装 Python 包时,它都会放在一个特定 Python 版本的目录中。 因此你的错误。

which python

给你PATH到 python

然后/path/to/python -m pip install thepackagetobeinstalled

非常感谢@MartijnPieters

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM