...使用 Linux (xubuntu)。如何正确安装 python2.7.3 + numpy + scipy + matplotlib + scikits.statsmodels + pandas0.7.3?我的最终目标是让它们正常工作。问题:
~$ python --version
Python 2.7.3
所以我已经有一个系统默认的 2.7.3,这很好!
~$ dpkg -s python-numpy
Package: python-numpy
Status: install ok installed
我已经安装了 numpy!太棒了!但是...
~$ python
Python 2.7.3 (default, Oct 23 2012, 01:07:38)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as nmp
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named numpy
python 找不到此模块。scipy、matplotlib 也一样。为什么?
~$ sudo apt-get install python-numpy
[...]
Reading package lists... Done
Building dependency tree
Reading state information... Done
python-numpy is already the newest version.
[...]
为什么它看不到 numpy 和其他人?
更新:
>>> import sys
>>> print sys.path
['', '/usr/local/lib/python27.zip', '/usr/local/lib/python2.7', '/usr/local/lib/python2.7/plat-linux2', '/usr/local/lib/python2.7/lib-tk', '/usr/local/lib/python2.7/lib-old', '/usr/local/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages']
>>>
所以我有 /usr/local/lib/python2.7
~$ pip freeze
Warning: cannot find svn location for distribute==0.6.16dev-r0
BzrTools==2.4.0
CDApplet==1.0
[...]
matplotlib==1.0.1
mutagen==1.19
numpy==1.5.1
[...]
pandas==0.7.3
papyon==0.5.5
[...]
pytz==2012g
pyxdg==0.19
reportlab==2.5
scikits.statsmodels==0.3.1
scipy==0.11.0
[...]
zope.interface==3.6.1
如您所见,这些模块已安装!但是! ls -la /usr/local/lib/ 仅提供 python2.7 目录。而且仍然
~$ python -V
Python 2.7.3
和
导入系统 sys.version'2.7.3(默认,2012 年 10 月 23 日,01:07:38)\n[GCC 4.6.1]'
更新:
可能我错过了另一个例子...一个在,/usr/Python-2.7.3/
第二个(似乎是很久以前“手动”安装的)在,/usr/python2.7.3/Python-2.7.3/
但两个相同的版本如何能同时工作???可能其中一个被“禁用”(未被任何程序使用,但我不知道如何检查是否有任何程序使用它)。
~$ ls -la /usr/bin/python*
lrwxrwxrwx 1 root root 9 2011-11-01 11:11 /usr/bin/python -> python2.7
-rwxr-xr-x 1 root root 2476800 2012-09-28 19:48 /usr/bin/python2.6
-rwxr-xr-x 1 root root 1452 2012-09-28 19:45 /usr/bin/python2.6-config
-rwxr-xr-x 1 root root 2586060 2012-07-21 01:42 /usr/bin/python2.7
-rwxr-xr-x 1 root root 1652 2012-07-21 01:40 /usr/bin/python2.7-config
lrwxrwxrwx 1 root root 9 2011-10-05 23:53 /usr/bin/python3 -> python3.2
lrwxrwxrwx 1 root root 11 2011-09-06 02:04 /usr/bin/python3.2 -> python3.2mu
-rwxr-xr-x 1 root root 2852896 2011-09-06 02:04 /usr/bin/python3.2mu
lrwxrwxrwx 1 root root 16 2011-10-08 19:50 /usr/bin/python-config -> python2.7-config
有一个符号链接 python->python2.7,也许我可以ln -f -s
将此链接到确切的 /usr/Python-2.7.3/python 目标而不会造成损害?如何正确删除 2.7.3 的“副本”?否则……
~$ ls -la /usr/bin/virtualenv
-rwxr-xr-x 1 root root 58 2011-03-16 18:55 /usr/bin/virtualenv
但仅在这种情况下有效:
~$ /usr/bin/python /usr/bin/virtualenv qenv
New python executable in qenv/bin/python
Installing distribute....................................................................................................................................................................................done.
Installing pip...............done.
这不起作用!
python virtualenv.py pyenv
我会尽量说得更清楚。只是一些问题。为什么我可以通过“/usr/bin/python”导入 numpy,但不能只使用“python”?如果我想为不同的应用程序安装另一个版本的 python,最好的方法是什么?如何将软件包安装到所选的 pythonpath 中?我没有找到完整的指南。
感谢大家!解决方法如下:
$ sudo nano /usr/share/python/debian_defaults
$ sudo mv /usr/bin/python /usr/bin/python2.Y_old
$ sudo ln -s -f /usr/bin/python2.7 /usr/bin/python
我的默认版本是 2.7.3,现在是 2.7.2+。我没有看到太大的差异,所以我认为它相当安全。但我需要阅读更多关于
虚拟环境
和
pip 和默认 PATH
答案1
我强烈建议你使用虚拟环境。Virtualenv 允许您根据每个项目创建 Python 环境。我开始新项目的工作流程是
- 创建项目目录
myapp
- 从以下位置下载 virtualenvhttps://github.com/pypa/virtualenv/tarball/develop
- 创建虚拟环境:
python virtualenv.py pyenv
- 激活虚拟环境
source pyenv/bin/activate
在虚拟环境中安装软件包:
pip install -U numpy matplotlib pandas ...
通过此设置,您可以控制版本,重新安装或删除软件包,而不必依赖存储库中可用的版本。
答案2
这个问题最好在 Xubuntu 论坛上问,因为这很可能是配置问题。是不是安装了多个版本的 Python?
在python解释器中,输入以下代码;
import sys
print sys.path
验证 numpy 目录是否安装在 中列出的目录之一中sys.path
。
在我的 FreeBSD(类 UNIX)系统上,安装了 python 2.7.3,numpy 安装为 的子目录/usr/local/lib/python2.7/site-packages/
。在 Windows 上,它可能是C:\Python27\Lib\site-packages\
。
例如,如果你还安装了 Python 3.x,则可能是为该 Python 安装了 numpy 等。在这种情况下,请查看/usr/local/lib/python3.x/site-packages/
或C:\Python3x\Lib\site-packages\
。
答案3
您似乎在 中使用自定义安装的 Python 2.7.3 /usr/local/bin
。使用/usr/bin/python
,您应该能够import numpy
;apt-get
安装到/usr
但永远不会/usr/local
。