成功点安装后导入错误
我用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确实给了一个很好的答案。 我只想添加更多的东西:
- 检查是否将库安装到要使用的virtualenv中。
- 有一些库的软件包名称与库的名称不同。 你可以看看他们的在线文档(谷歌关键字
python <library>
通常会提供信息),看看你是否正确导入包。
(我知道我的答案应该作为@ cel的回答发表评论,只是我没有足够的声望去做)