我试图在ubuntu中使用numpy,但它失败并出现错误:
导入多阵列numpy扩展模块失败。最有可能的 你试图导入一个失败的numpy版本。如果你正在工作 使用numpy git repo,尝试
git clean -xdf
(不删除所有文件 在版本控制下)。否则重新安装numpy。
问题是我正在使用python 3.5(我使用this question中的建议安装)而不是默认3.4附带的那个。所以我按照建议的答案安装了它,然后我安装了numpy:
pip3 install --target=/usr/local/lib/python3.5/dist-packages numpy
以便安装到python3.5。之后,如果我尝试使用numpy我有上述错误。但是如果我在默认的python 3.4上使用它,我就不会有这个错误。我显然试图重新安装/更新/修复numpy但它没有做任何事情。具体来说,我做了:
pip install --target=/usr/local/lib/python3.5/dist-packages --upgrade numpy
有没有办法在ubuntu中使用python 3.5时安装numpy?我如何实际修复numpy?为什么我的numpy适用于3.4而不适用于3.5?
完整的错误是:
>>> import numpy
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/numpy/core/__init__.py", line 16, in <module>
from . import multiarray
ImportError: cannot import name 'multiarray'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.5/dist-packages/numpy/__init__.py", line 142, in <module>
from . import add_newdocs
File "/usr/local/lib/python3.5/dist-packages/numpy/add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "/usr/local/lib/python3.5/dist-packages/numpy/lib/__init__.py", line 8, in <module>
from .type_check import *
File "/usr/local/lib/python3.5/dist-packages/numpy/lib/type_check.py", line 11, in <module>
import numpy.core.numeric as _nx
File "/usr/local/lib/python3.5/dist-packages/numpy/core/__init__.py", line 24, in <module>
raise ImportError(msg)
ImportError:
Importing the multiarray numpy extension module failed. Most
likely you are trying to import a failed build of numpy.
If you're working with a numpy git repo, try `git clean -xdf` (removes all
files not under version control). Otherwise reinstall numpy.
作为一个警告,我实际上是通过首先使用cpu tensorflow docker镜像来完成所有这些。所以我在一个docker容器中完成了所有这些操作,该容器具有cpu张量流图像作为基本映像。特别是:
FROM gcr.io/tensorflow/tensorflow:latest-devel-py3
我还做了一些hacky来检查是否有效,而且没有。我所做的是将路径附加到python3.5的sys.path
中的python3.4包中。所以我去了python3.5
的命令行,然后我导入了sys并继续将以下字符串添加到sys.path:
sys.path.append('/usr/local/lib/python3.4/dist-packages')
它设法导入我拥有的其他库,但它无法导入numpy:
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/dist-packages/numpy/__init__.py", line 142, in <module>
from . import add_newdocs
File "/usr/local/lib/python3.4/dist-packages/numpy/add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "/usr/local/lib/python3.4/dist-packages/numpy/lib/__init__.py", line 8, in <module>
from .type_check import *
File "/usr/local/lib/python3.4/dist-packages/numpy/lib/type_check.py", line 11, in <module>
import numpy.core.numeric as _nx
File "/usr/local/lib/python3.4/dist-packages/numpy/core/__init__.py", line 14, in <module>
from . import multiarray
ImportError: cannot import name 'multiarray'
除了numpy之外,大多数其他软件包看起来还不错。可能当我pip安装numpy它自动去了python 3.4版本或什么?
另外,如果可以让他们的答案在Dockerfile中工作,那将非常有帮助!
答案 0 :(得分:2)
您不能在Python版本之间混合搭配。每个版本都需要自己的NumPy副本。这是因为Python不提供跨版本的二进制兼容性。对于纯Python包(没有编译代码,就像NumPy的情况一样),它原则上可以工作,但环境很难管理。某些发行版与符号链接共享.py
个文件。
首先要删除错误的安装。 我将只关注让python 3.5安装工作
cd /usr/local/lib/python3.5/dist-packages
使用rm
命令继续之前的警告应谨慎进行,因为您需要root权限才能在/usr
中运行。
rm -r numpy
(以root身份)。
然后,你需要点子。您可以使用pypi网页中的文件安装它:https://pip.pypa.io/en/latest/installing/
cd
wget https://bootstrap.pypa.io/get-pip.py
并使用
进行安装python3.5 get-pip.py
您可以为整台计算机或仅当前用户(使用--user
选项)执行此操作。一旦安装了pip,
python3.5 -m pip install -U numpy
应该这样做。
如果您的Python版本没有二进制包,并且pip开始编译并且无法执行,请安装包python3.5-dev
。