问题描述
我试图在ubuntu中使用numpy,但失败并显示错误:
导入多数组numpy扩展模块失败。 您极有可能尝试导入失败的numpy构建。 如果您使用的是numpy git repo,请尝试使用
git clean -xdf
(删除所有不受版本控制的文件)。 否则,请重新安装numpy。
问题是我使用的是python 3.5(我在安装的建议时安装了该工具),而不是默认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映像来完成所有这些工作。 所以我在一个以cpu tensorflow映像为基础映像的docker容器中完成了所有这些工作。 尤其是:
FROM gcr.io/tensorflow/tensorflow:latest-devel-py3
我还进行了一些修改,以检查是否可行,但没有成功。
我所做的就是将路径添加到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以外,其他大多数软件包似乎都还不错。 可能当我点安装numpy时,它会自动转到python 3.4版本或其他版本吗?
另外,如果可以使他们的答案在Dockerfile中起作用,那将非常有用!
1楼
您不能在Python版本之间混用和匹配。
每个版本都需要自己的NumPy副本。
这是因为Python不提供跨版本的二进制兼容性。
对于纯Python程序包(NumPy就是这种情况,没有编译代码),它原则上可以工作,但是环境很难管理。
一些发行版通过符号链接共享.py
文件。
第一件事是删除错误的安装。 我将只专注于使python 3.5安装正常工作
cd /usr/local/lib/python3.5/dist-packages
在继续使用rm
命令之前,应格外小心,甚至要格外小心,因为您需要root特权才能在/usr
操作。
rm -r numpy
(作为根)。
然后,您需要点子。 您可以通过pypi网页上的文件进行安装: ://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
。