当前位置: 代码迷 >> python >> 如何安装/修复在python 3.4上有效但在3.5上无效的numpy安装失败?
  详细解决方案

如何安装/修复在python 3.4上有效但在3.5上无效的numpy安装失败?

热度:126   发布时间:2023-06-13 13:42:44.0

我试图在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中起作用,那将非常有用!

您不能在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