【问题标题】:Can't get numpy to import with python3.2 [closed]无法使用 python3.2 导入 numpy [关闭]
【发布时间】: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 上安装了 python3python3-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


【解决方案1】:

在侦探工作之后,正如怀疑的那样:P,还有一些其他的 Python 环境在工作。现在,为什么会在那里? :-D

如果您想使用系统 Python,请使用 /usr/bin/python3 强制它。这样您就可以使用已安装的 Numpy。

如果你想删除/usr/local/bin 下的那个,只需重命名它,这样它就不会“影响”系统中的其他 Python。请记住,/usr/local/bin 在路径中优先于 /usr/bin

【讨论】:

  • 哈哈谢谢。像魅力一样工作。我终于可以呼吸了!
  • 关于如何安装 matplotlib 的任何建议?有类似的问题。我应该将它安装在同一个 usr/lib 文件夹中吗?
  • 这完全取决于你如何安装东西。 easy_install? pip? ...?在任何情况下,如果您正在使用其中一些软件包安装工具,请确保专门使用您想要的 Python 运行它。例如。 /usr/bin/python3 /usr/bin/pip ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2021-08-11
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
相关资源
最近更新 更多