【发布时间】:2014-02-13 15:27:16
【问题描述】:
我有 Ubuntu 12.04,并在机器上构建了三个不同的 python(python2.7、python3、python3.2)。我只能在 python 2.7 中获取要导入的包。每当我尝试在 Python 3.2.3 中导入它们时,我都会得到:
Python 3.2.3 (default, Jan 14 2014, 13:11:14)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named numpy
>>>
我在 Stack 上看到过各种类似问题的问题,但没有一个能解决我的问题。
例如,我已经运行了这段代码:
sudo apt-get install python3-numpy python3-scipy
有了这个结果:
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-numpy is already the newest version.
python3-scipy is already the newest version.
看来我确实为 python3 安装了包,但无法将它们加载到 python3.2.3 环境中。
>>> sys.path
['', '/usr/local/lib/python32.zip', '/usr/local/lib/python3.2',
'/usr/local/lib/python3.2/plat-linux2', '/usr/local/lib/python3.2/lib-dynload',
'/home/bre-dev-2/.local/lib/python3.2/site-packages', '/usr/local/lib/python3.2/site-packages']
所有站点包都是空的,而 numpy 和 scipy 存在于文件夹 usr/lib/python3/dist-packages 中(注意路径名中没有“本地”)。
最后,当我更改 sys.path 以包含带有 numpy 和 scipy 的目录时:
>>> sys.path[6]='/usr/lib/python3/dist-packages'
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/numpy/__init__.py", line 137, in <module>
from . import add_newdocs
File "/usr/lib/python3/dist-packages/numpy/add_newdocs.py", line 9, in <module>
from numpy.lib import add_newdoc
File "/usr/lib/python3/dist-packages/numpy/lib/__init__.py", line 4, in <module>
from .type_check import *
File "/usr/lib/python3/dist-packages/numpy/lib/type_check.py", line 8, in <module>
import numpy.core.numeric as _nx
File "/usr/lib/python3/dist-packages/numpy/core/__init__.py", line 5, in <module>
from . import multiarray
ImportError: cannot import name multiarray
有什么建议吗?开始失去理智了……
【问题讨论】:
-
我知道您不想听到“它对我有用”,但我刚刚在 12.04.1 上安装了
python3和python3-numpy并且它有效。会不会是你的sys.path坏了? -
也许......我会检查一下,谢谢!
-
有趣。
sys.path指向usr/local/lib而 dist-packages 在usr/lib... -
/usr/local出现在路径中是正常的,至少在 Debian/Ubuntu 系统中是这样,因为这是您默认安装系统范围的非打包内容的位置。 不正常(绝对)是/usr/lib/python3.2不存在。现在,如果您正在运行手动构建的 Python,那将 成为可能。小心检查? (which python3) -
看起来
/usr/local/bin/python3是赢家。
标签: python python-3.x numpy