Python-虽已安装但未找到软件包

时间:2018-11-05 09:59:41

标签: python python-3.x package

我有以下版本的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笔记本中输入命令import wfdb或在终端中键入python版本时,会收到以下消息

No module named 'wfdb'

这与python检查软件包位置的路径有关吗?如何检查和更改它?

4 个答案:

答案 0 :(得分:2)

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

pip是与特定的Python安装相关的脚本,该脚本可以在不同位置安装多个版本,并且通常还与pipX和{{1}一起安装}以匹配与其绑定的Python版本的pipX.Y版本指示符。对于Python 3.6,这意味着相同的脚本也可以作为X.Ypip3使用。 (这也意味着pip3.6可以连接到Python 2或Python 3,具体取决于您的确切操作系统设置。没有pip(没有版本号)就可以安装到Python 2.x中是不存在的。正如某些答案所声称的那样。

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

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

PATH

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

pip -V

其中pip是点的版本号,pip pipX.pipY path/to/pythonX.Y/site-packages/pip (python X.Y) 告诉您这是什么Python安装。

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

pipX.pipY

输出该Python版本的Python模块搜索路径。 Python也可以与path/to/pythonX.Ypython -m site python一起运行,并且受相同的pythonX搜索。

请注意此处的pythonX.Y开关,它指示Python在其模块搜索路径中找到一个模块并将其作为脚本执行。模块负载支持以这种方式运行,包括PATH 。这一点很重要,因为如果您已经可以启动正确的Python版本,则可以避免搜索更好的-m命令。

您在这里有几个不错的选择:

  • 由于使用的是Anaconda,因此可以为同一项目寻找conda软件包。那里is such a package for wfdb。用

    安装
    pip

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

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

    这不是所有Python软件包的选项,如果没有conda install wfdb 软件包,则必须使用pip install。参见Installing non-conda packages

  • 您可以使用conda command to create a conda environment。创建环境后,您可以使用

    激活它
    conda

    更改您的pip设置。在环境为“ active”的情况下,source activate <name_of_cenv> 上列出的第一个目录是conda环境的目录,而PATH命令将是与该环境相关的目录。

    请注意,conda环境为您提供了一个特定项目的隔离环境,从而使库的安装与其他Python软件包在PATH中心的位置分开。如果要为所有Anaconda Python项目安装软件包,请不要使用conda环境。

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

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

答案 1 :(得分:1)

您可以阅读here

  

pip3和pip仅在不使用任何pip时才有所不同   virualenv(或conda)之类的环境经理。现在就像你一样   创建一个具有python == 3.x的conda环境,pip为   相当于pip3。

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

激活新环境:

在Windows上:

activate myenv

在macOS(应该由您选择)和Linux上:

source activate myenv
  

注意:用环境名称替换myenv。

答案 2 :(得分:1)

您已经安装了python2.x软件包,并且正在使用python3.x。试试:

pip3 install wfdb

如果您没有运行pip3

[apt-get/yum] install pythion3-pip

您始终可以通过运行以下命令查看当前已安装的软件包:

pip freeze

以及适用于python 3.x软件包

pip3 freeze

请记住,每次安装Python软件包时,它将被放置在一个特定Python版本的目录中。因此,您的错误。

答案 3 :(得分:0)

which python

为您提供PATH到python

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

非常感谢@MartijnPieters