首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法导入Python3.7或Python3.8-Ubuntu18.04中的numpy

无法导入Python3.7或Python3.8-Ubuntu18.04中的numpy
EN

Stack Overflow用户
提问于 2020-03-24 18:56:26
回答 1查看 3.1K关注 0票数 1

我管理着一组用户,因此我试图弄清楚如何安装numpy让所有用户使用,而不让每个人自己安装软件包。

我有Python2.7.17和Python3.6.9(默认情况下通过Ubuntu18.04安装)。此外,我还使用以下方法安装了Python3.7.5、Python3.8.0和numpy

代码语言:javascript
运行
复制
sudo apt install python3.7
sudo apt install python3.8
sudo apt install python3-numpy

如果运行pythonpython3python3.6 (调用python2.7.17或python3.6.9),则可以运行以下命令。

代码语言:javascript
运行
复制
import numpy

但是,如果在运行python3.7python3.8之后尝试运行上述操作,则会收到以下错误消息:

ImportError: cannot import name 'multiarray' from 'numpy.core' (/usr/lib/python3/dist-packages/numpy/core/__init__.py)

编辑:完全错误

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/numpy/core/__init__.py", line 16, in <module>
    from . import multiarray
ImportError: cannot import name 'multiarray' from 'numpy.core' (/usr/lib/python3/dist-packages/numpy/core/__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/numpy/__init__.py", line 142, in <module>
    from . import add_newdocs
  File "/usr/lib/python3/dist-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/usr/lib/python3/dist-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/usr/lib/python3/dist-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/usr/lib/python3/dist-packages/numpy/core/__init__.py", line 26, 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.

Original error was: cannot import name 'multiarray' from 'numpy.core' (/usr/lib/python3/dist-packages/numpy/core/__init__.py)

当我安装numpy时,它会被安装到/usr/lib/python3/dist-packages上,这应该是很好的,因为它在/usr/lib/python3/dist-packages的所有版本的sys.path()上。

因为使用apt的numpy版本只适用于Python3.6.9,所以它不能工作吗?如果是这样的话,我应该如何为所有版本的Python的所有用户安装numpy

编辑2:/usr/lib/python3/dist-packages/numpy/core的内容

代码语言:javascript
运行
复制
total 3672
-rw-r--r-- 1 root root   29215 Sep 29  2017 arrayprint.py
-rw-r--r-- 1 root root     413 Sep 17  2017 cversions.py
-rw-r--r-- 1 root root   67393 Sep 17  2017 defchararray.py
-rw-r--r-- 1 root root    6208 Dec  5  2017 _dummy.cpython-36m-x86_64-linux-gnu.so
-rw-r--r-- 1 root root   35533 Sep 29  2017 einsumfunc.py
-rw-r--r-- 1 root root   98980 Sep 29  2017 fromnumeric.py
-rw-r--r-- 1 root root   12104 Sep 29  2017 function_base.py
-rw-r--r-- 1 root root    7331 Sep 29  2017 generate_numpy_api.py
-rw-r--r-- 1 root root   18422 Sep 17  2017 getlimits.py
drwxr-xr-x 3 root root    4096 Mar 24 13:20 include
-rw-r--r-- 1 root root    4692 Sep 17  2017 info.py
-rw-r--r-- 1 root root    3039 Sep 29  2017 __init__.py
-rw-r--r-- 1 root root   21375 Sep 29  2017 _internal.py
drwxr-xr-x 3 root root    4096 Mar 24 13:20 lib
-rw-r--r-- 1 root root   10789 Sep 17  2017 machar.py
-rw-r--r-- 1 root root   11432 Sep 17  2017 memmap.py
-rw-r--r-- 1 root root    4704 Sep 17  2017 _methods.py
-rw-r--r-- 1 root root 1582528 Dec  5  2017 multiarray.cpython-36m-x86_64-linux-gnu.so
-rw-r--r-- 1 root root   48624 Dec  5  2017 multiarray_tests.cpython-36m-x86_64-linux-gnu.so
-rw-r--r-- 1 root root   91642 Sep 29  2017 numeric.py
-rw-r--r-- 1 root root   28786 Sep 29  2017 numerictypes.py
-rw-r--r-- 1 root root   10384 Dec  5  2017 operand_flag_tests.cpython-36m-x86_64-linux-gnu.so
drwxr-xr-x 2 root root    4096 Mar 24 13:20 __pycache__
-rw-r--r-- 1 root root   29418 Sep 29  2017 records.py
-rw-r--r-- 1 root root   15345 Dec  5  2017 setup_common.py
-rw-r--r-- 1 root root   40704 Sep 29  2017 setup.py
-rw-r--r-- 1 root root   19081 Sep 29  2017 shape_base.py
-rw-r--r-- 1 root root   10408 Dec  5  2017 struct_ufunc_test.cpython-36m-x86_64-linux-gnu.so
-rw-r--r-- 1 root root   44312 Dec  5  2017 test_rational.cpython-36m-x86_64-linux-gnu.so
drwxr-xr-x 4 root root    4096 Mar 24 13:20 tests
-rw-r--r-- 1 root root 1415520 Dec  5  2017 umath.cpython-36m-x86_64-linux-gnu.so
-rw-r--r-- 1 root root   18856 Dec  5  2017 umath_tests.cpython-36m-x86_64-linux-gnu.so

locate multiarray.py结果

代码语言:javascript
运行
复制
/usr/lib/python2.7/dist-packages/numpy/core/tests/test_multiarray.py
/usr/lib/python2.7/dist-packages/numpy/core/tests/test_multiarray.pyc
/usr/lib/python2.7/dist-packages/numpy/matrixlib/tests/test_multiarray.py
/usr/lib/python2.7/dist-packages/numpy/matrixlib/tests/test_multiarray.pyc
/usr/lib/python3/dist-packages/numpy/core/tests/test_multiarray.py
/usr/lib/python3/dist-packages/numpy/matrixlib/tests/test_multiarray.py
EN

回答 1

Stack Overflow用户

发布于 2020-08-19 10:47:07

问题是deb numpy-python3只适用于python3.6。(令人震惊的信息不足)错误消息是由__init__.py中的试用导入引起的。

代码语言:javascript
运行
复制
try:
    from . import multiarray
except ImportError as exc:
    msg = """
Importing the multiarray numpy extension module failed.  Most
 :

该导入失败是因为您正在运行python3.7,它试图加载动态库multiarray.cpython-37m-x86_64-linux-gnu.so,但是numpy-python3只提供multiarray.cpython-36m-x86_64-linux-gnu.so:这是您观察到的次要版本不兼容。

如果您查看numpy-python3的包描述,这实际上是显式的。

代码语言:javascript
运行
复制
$ apt-cache show python3-numpy | grep Dep
Depends: python3 (<< 3.7), python3 (>= 3.6~), ...

python3提供了一个兼容的版本。

代码语言:javascript
运行
复制
$ apt-cache show python3 | grep Vers
Version: 3.6.7-1~18.04

因此,恐怕使用带有3.7或3.8的Numpy系统是不走运的,您需要安装它(应该将它安装到/usr/local中的包中,而不是经过测试),但是不要忘记在python3.7 -m pip ...中这样做,因为系统pip3使用的是python3,即python3.6,除非您已经使用了update-alternatives

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60837548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档