我管理着一组用户,因此我试图弄清楚如何安装numpy
让所有用户使用,而不让每个人自己安装软件包。
我有Python2.7.17和Python3.6.9(默认情况下通过Ubuntu18.04安装)。此外,我还使用以下方法安装了Python3.7.5、Python3.8.0和numpy
。
sudo apt install python3.7
sudo apt install python3.8
sudo apt install python3-numpy
如果运行python
、python3
或python3.6
(调用python2.7.17或python3.6.9),则可以运行以下命令。
import numpy
但是,如果在运行python3.7
或python3.8
之后尝试运行上述操作,则会收到以下错误消息:
ImportError: cannot import name 'multiarray' from 'numpy.core' (/usr/lib/python3/dist-packages/numpy/core/__init__.py)
编辑:完全错误
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
的内容
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
结果
/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
发布于 2020-08-19 10:47:07
问题是deb numpy-python3
只适用于python3.6
。(令人震惊的信息不足)错误消息是由__init__.py
中的试用导入引起的。
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
的包描述,这实际上是显式的。
$ apt-cache show python3-numpy | grep Dep
Depends: python3 (<< 3.7), python3 (>= 3.6~), ...
python3
提供了一个兼容的版本。
$ 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
。
https://stackoverflow.com/questions/60837548
复制相似问题