成功点安装后导入错误

我用pip install <library-name>成功安装了一个库。 但是,当我尝试导入它时,python引发ImportError: No module named <library-name> 。 为什么我得到这个错误,我怎样才能使用已安装的库?

TL; DR :通常有多个版本的Python解释器和pip版本。 使用python -m pip install <library-name>而不是pip install <library-name>将确保库被安装到默认的python解释器中。

另请注意:根据我个人的经验,我build议不要使用sudo pip install将软件包安装到系统默认的python解释器中。 这可能会导致各种凌乱的问题。 每当你想用sudo打电话给pip时,请首先检查一下virtualenv对你来说是不是一个更好的select。


大多数现代系统都提供了多个python解释器。 每个口译员都维护自己的一套安装软件包。 安装新软件包时,了解哪些软件包实际安装在哪个解释器中非常重要。

在unix系统上,shell可以用来理解到底发生了什么。

inputwhich -a python显示PATH中的所有解释器。 第一行对应于从命令行运行python时使用的解释器。

 /private/tmp/py32/bin/python /usr/local/bin/python /usr/bin/python 

每个点的版本都属于一个解释器。 which -a pip显示所有点的版本。 再次,第一行是在你的shell中inputpip时会被调用的内容。

 /usr/local/bin/pip /usr/bin/python 

请注意,在这种情况下, python属于安装在/private/tmp/py32/的解释器,但pip会安装到解释器/usr/local/bin 。 在成功安装一个库之后,你将无法在默认的Python解释器中导入它。

那么如何导入已安装的库?

您的第一个select是以完整path启动所需的解释器。 所以如果你input/usr/local/bin/python ,你将能够导入库。

第二个 – 通常是首选 – 选项是专门调用正确的pip版本。 为此,可以使用python -m pip install <library-name>来代替pip install <library-name> 。 这将会调用属于你的默认python解释器的pip版本。

@cel确实给了一个很好的答案。 我只想添加更多的东西:

  1. 检查是否将库安装到要使用的virtualenv中。
  2. 有一些库的软件包名称与库的名称不同。 你可以看看他们的在线文档(谷歌关键字python <library>通常会提供信息),看看你是否正确导入包。

(我知道我的答案应该作为@ cel的回答发表评论,只是我没有足够的声望去做)