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

标签 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

但是,当我输入命令 import wfdb 时在 Python notebook 或终端中的 python 版本中,我收到以下消息
No module named 'wfdb'
它与python检查包在哪里的路径有关吗?如何检查这一点以及如何更改它?

最佳答案

您(至少)有 2 个 Python 安装,一个由 Anaconda 管理,另一个似乎是在系统范围内安装的官方 Python.org Mac 版本。命令行上的pip命令是与 Python.org Mac 构建相关的命令。pip是绑定(bind)到特定Python安装的脚本,不同位置可以安装多个版本的脚本,通常还会安装pipXpipX.Y来匹配X.Y版本指示它绑定(bind)到的 Python 版本。对于 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 包。有is such a package for wfdb 。安装它
      conda install wfdb
    
    Anaconda 旨在为您提供更广泛的软件管理体验,其中包括比 Python PyPI 生态系统更广泛的软件选项集,并且 conda 包通常管理的不仅仅是 Python 包。
    Conda 包通常由与包本身不同的一组开发人员维护,因此 PyPI 上可能有比 Conda 更新的版本(需要pip install)。
    这不是所有 Python 包的选项,如果没有conda包,则必须使用pip。参见Installing non-conda packages
  • 您可以使用 conda command to create a conda environment。创建环境后,您可以使用以下命令激活它
      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
  • 关于Python - 虽然已安装但未找到包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53152047/

    相关文章:

    python - 如何在Python中释放内存

    java - 维基百科删除日志下载

    python - 使用公共(public)键将带有公共(public)键作为元素的字典的 Pandas Dataframe 列转换为单独的数据框

    python - mysql python 由于某种原因不更新表

    Python 打包文档

    r - 通过 twitterR-package 获取推文计数

    Oracle打包多个 session 的全局变量

    python - 如何以编程方式确保函数包含 return 语句?

    python-3.x - Python-docx add_picture size 不会打印如屏幕上所示

    python - 如何在不使用 'append()' 的情况下向列表添加新值,然后将该值存储在新创建的列表中?