我通常使用Python 2.7进行工作,但这一次我需要在Python 3中测试一个脚本。
它已经安装在我的电脑上了,但当我启动“python3”,然后输入“import numpy”时,它会显示“cannot import name 'multiarray'”。
我甚至安装了Anaconda3进行测试,但仍然没有任何反应。
myName:~/anaconda3/bin$ python3
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 180, in <module>
from . import add_newdocs
File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 8, in <module>
from .type_check import *
File "/usr/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 11, in <module>
import numpy.core.numeric as _nx
File "/usr/lib/python2.7/dist-packages/numpy/core/__init__.py", line 14, in <module>
from . import multiarray
ImportError: cannot import name 'multiarray'
我看到它正在lib/python2.7中查找,但我不知道如何让它搜索python3库。我已经尝试了python -m pip install numpy,并尝试在python3中创建虚拟环境,但仍然出现相同的错误。我无法想象该怎么办。有人能帮帮我吗?我想补充一点,由于我是在客户机上工作,所以不能使用'sudo'启动命令。
编辑:我尝试了@gehbiszumeis的答案,得到了这个结果:
myName:~ $ cd anaconda3/bin/
myName:~/anaconda3/bin $ source activate /home/myName/anaconda3
(base) myName:~/anaconda3/bin $ conda list numpy
# packages in environment at /home/myName/anaconda3:
#
# Name Version Build Channel
numpy 1.14.3 py36hcd700cb_1
numpy-base 1.14.3 py36h9be14a7_1
numpydoc 0.8.0 py36_0
(base) myName:~/anaconda3/bin $ python3
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 180, in <module>
from . import add_newdocs
File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 8, in <module>
from .type_check import *
File "/usr/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 11, in <module>
import numpy.core.numeric as _nx
File "/usr/lib/python2.7/dist-packages/numpy/core/__init__.py", line 14, in <module>
from . import multiarray
ImportError: cannot import name 'multiarray'
当我输入conda list numpy时,看到已经安装了numpy 36,但似乎无法工作..我错过了什么吗?
编辑2: 按照 @Pal Szabo 的方法后,我测试了命令python3 -m pip install --upgrade pip,并收到以下错误信息:
(env) (base) myName:~/anaconda3/bin $ python3 -m pip install --upgrade pip
Traceback (most recent call last):
File "/home/myName/anaconda3/lib/python3.6/runpy.py", line 183, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File "/home/myName/anaconda3/lib/python3.6/runpy.py", line 142, in _get_module_details
return _get_module_details(pkg_main_name, error)
File "/home/myName/anaconda3/lib/python3.6/runpy.py", line 109, in _get_module_details
__import__(pkg_name)
File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 4, in <module>
import locale
File "/home/myName/anaconda3/bin/env/lib/python3.6/locale.py", line 16, in <module>
import re
File "/home/myName/anaconda3/bin/env/lib/python3.6/re.py", line 142, in <module>
class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'`
这是一个疯狂的混合物,包括python3、python2.7和再次的python3。我迷失了 \o/
编辑3:
我终于找到了错误所在。 我的PYTHONPATH有问题,指向某个地方,那里定义了一个.pth文件,并与Python 2.7库建立了一些硬链接。 用一个简单的“unset PYTHONPATH”就可以正常工作了。 谢谢大家。
(base) myName:~/anaconda3/bin $ python
而不是...python3
来启动 Python。似乎你仍然在调用不属于该环境的 Python。 - gehbiszumeisconda create -n new_env_full anaconda python=3.6
更多信息可以在这里查看示例。然后通过source activate env_full
启动环境,并尝试调用Python并再次导入NumPy。 - gehbiszumeis