我安装了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 安装软件。python
python -c 'import sys; print(sys.path)'
/usr
也就是说,对于 Python 包(如 Pygame 和 Beautiful Soup),事情可能会变得更加复杂复杂的. 混合pip
和apt-get
会造成麻烦,因此保持简单的方法之一是只使用系统包管理器。如果您最终需要使用 pip,因为包管理器没有您需要的东西(或最新版本),最好在虚拟环境并使用 pip 获取该虚拟环境中所需的所有 Python 包。
为了让您的系统正确找到默认的系统 python(python 2,这是您调用时的默认设置),请尝试重写将提示符下的命令路由到原始目的地的python
符号链接:python
sudo ln -s /usr/bin/python2.7 /usr/bin/python
希望这能让它找到您安装的 python 包。