Python 3 无法导入第三方包

Python 3 无法导入第三方包

我有 Python 版本 3.5.2 和 pip3,所以我做了

sudo pip3 install pyqt5

它安装在 /usr/local/lib/python3.5/dist-packages 中

但是当我进入我的python 3解释器并输入

import PyQt5

它给我一个错误,说找不到名为 PyQt5 的模块。

因此我尝试通过执行以下操作将 /usr/local/lib/python3.5/dist-packages 路径添加到 PYTHONPATH

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.5/dist-packages

但这并没有解决任何问题。如何让 Python 3.5.2 检测到 PyQt5?

答案1

感谢 George,我慢慢找到了答案。问题的根源在于我从源而不是从 Ubuntu aptitude 包管理器安装了 Python 3.5.2 版本。

基本上,如果 Python 是从源安装的,那么,为了查找第三方包,它会使用/usr/local/lib/python3.5/site-packages,但如果它是使用 安装的apt,那么 Python 会查找/usr/local/lib/python3.5/dist-packages。这是为了确保多个 Python 版本不会混淆。以下是另一个解释问题:dist-packages 和 site-packages 之间有什么区别?

解决方案:

我的 Python3 安装正在查看 site-packages 并忽略 dist-packages,因此我添加了一个路径文件以使其也查看 dist-packages 内部。

cd /usr/local/lib/python3.5/site-packages
sudo vim dist-packages.pth
(Press i to go into insert mode inside Vim)
../dist-packages
:x (and Press Enter/Return)

现在,当 Python 查看内部时/site-packages,它会找到dist-packages.pth使其进入的东西/dist-packages

其他解决方案:

其他人遇到了与我完全相反的问题,他们的 Python 安装只查看了 内部/dist-packages,因此他们使用了与上面完全相同的方法,只不过他们没有在 内部创建一个dist-packages.pth文件(包含../dist-packages/site-packages,而是创建了一个site-packages.pth文件(包含../site-packages内部)/dist-packages

检查是否有效:

检查这是否有效的简单方法是进入 Python 解释器并打印 sys.path。它现在应该包含两个包路径:

charliebrown@playground:/usr/local/lib/python3.5/site-packages$ python3
Python 3.5.2 (default, Nov 19 2016, 02:36:25) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys; print(sys.path)
['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5',     '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib-dynload', 
'/usr/local/lib/python3.5/site-packages', '/usr/local/lib/python3.5/dist-packages']

我希望有一天这能帮助到别人......

相关内容