无法在 python 中导入已安装的包

无法在 python 中导入已安装的包

我安装了pip(pip 1.5.4 from /usr/lib/python2.7/dist-packages(python 2.7))。我的python版本是2.7。

pygame通过安装apt-get install python-pygame并收到成功消息。但是当我尝试将其导入时python,收到以下消息:

ashish@Ashish-Notebook:~$ python
Python 2.7.11 (default, Jun  6 2016, 07:21:54) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named pygame
>>> 

同样,我安装了 Beautiful Soup,pip install BeautifulSoup但无法将其导入任何地方。此外,当我再次尝试安装时,我收到此消息:

Requirement already satisfied (use --upgrade to upgrade): BeautifulSoup in /usr/local/lib/python2.7/dist-packages
Cleaning up...
ashish@Ashish-Notebook:~$

此外,当我获得已安装软件包的列表(通过 pip list)时。我可以在该列表中看到 pygame 和 beautifulsoup。

答案1

问题是,当您使用sudo apt-get install(或sudo pip install) 安装东西时,它们会安装到 中的位置/usr,但您从源代码编译的 python 安装在 中。您在提示符下/usr/local键入时实际运行的 python是您编译的那个(基于命令的输出),并且它找不到安装在目录中的 python 包。但是,Ubuntu 自带的 python(python 2 和 python 3)已安装在正确的位置,它会在那里找到已安装的包。所以一般建议尽量不要混合使用这样的安装方法。Ubuntu 通过官方存储库提供许多软件包,从而无需自己进行大量编译,并且通常建议尽可能通过 apt 安装软件。pythonpython -c 'import sys; print(sys.path)'/usr

也就是说,对于 Python 包(如 Pygame 和 Beautiful Soup),事情可能会变得更加复杂复杂的. 混合pipapt-get会造成麻烦,因此保持简单的方法之一是只使用系统包管理器。如果您最终需要使用 pip,因为包管理器没有您需要的东西(或最新版本),最好在虚拟环境并使用 pip 获取该虚拟环境中所需的所有 Python 包。

为了让您的系统正确找到默认的系统 python(python 2,这是您调用时的默认设置),请尝试重写将提示符下的命令路由到原始目的地的python符号链接:python

sudo ln -s /usr/bin/python2.7 /usr/bin/python

希望这能让它找到您安装的 python 包。

相关内容