【问题标题】:cannot import name 'multiarray' in numpy with python3无法使用python3在numpy中导入名称'multiarray'
【发布时间】:2019-02-14 13:44:58
【问题描述】:

我通常使用 python 2.7,但这次我必须在 python3 中测试一个脚本。

它已经安装在我的计算机上,但是当我启动“python3”,然后转到“import numpy”时,它显示“无法导入名称'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 中创建一个 virtualenv,但我仍然遇到同样的错误。

我不知道该怎么做。有人可以帮我吗?

我想补充一点,因为我在客户端机器上工作,所以无法使用“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,但它似乎不起作用.. 我错过了什么吗?

edit2: 在@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/

edit3:

我终于找到了我的错误。 这是我的 PYTHONPATH 的问题,它指向定义 .pth 文件的某个位置,并带有一些指向 python 2.7 库的硬链接。 使用简单的“未设置 PYTHONPATH”,它可以正常工作。 谢谢大家

【问题讨论】:

    标签: python python-3.x python-2.7 numpy installation


    【解决方案1】:

    根据我从您的代码清单中看到的情况,anaconda 环境似乎未激活(这通常由提示前括号 () 中的环境名称指示)。因此,python3 尝试查找 numpy 并且只找到您之前用于 python 2.7 的那个,这会导致错误(请参阅python2.7 错误消息)

    试试

    source activate <your-anaconda-environment>
    

    那么你的提示应该是这样的

    (<your-anaconda-environment>) myName:~/anaconda3/bin$ 
    

    Numpy 应该包含在标准的 anaconda 环境中。然后尝试使用

    检查您的环境中是否安装了numpy
    conda list numpy
    

    如果没有列出 numpy,请尝试使用 pip 安装它,就像你之前写的那样。

    【讨论】:

    • 我测试了您的解决方案并编辑了我的帖子。由于超过 5xx 个字符,无法正确回答您。这是编辑帖子的正确方法吗?
    • 尝试只调用(base) myName:~/anaconda3/bin $ python而不是...python3来启动python。看来你还在调用不属于环境的python
    • 同样的事情发生了:(
    • 哇,奇怪!好的,接下来就是使用标准包和 python 3.6 建立一个全新的 anaconda 环境。尝试conda create -n new_env_full anaconda python=3.6 更多信息请参见示例here。然后通过source activate env_full启动环境并尝试再次调用python并导入numpy
    • 我完全按照你提到的做了,创建了 new-env-full,它在安装列表中说它安装了 numpy "1.14.3-py36hcd700cb_1",所以我猜 'py36' 的意思是 python3.6所以它应该是正确的。但是,当我进入环境并输入“python”,然后输入“import numpy”时,我仍然在回溯中有错误和“python2.7”。与python3相同,然后导入numpy。
    【解决方案2】:

    如果要使用python3,请使用pip3代替pip:

     pip3 install numpy
    

    您也可以在终端中尝试这些:

    rm -Rf env
    virtualenv -p python3 env
    source env/bin/activate
    python3 -m pip install --upgrade pip
    pip3 install numpy
    

    还要确保脚本的第一行是

    #!/usr/bin/python3
    

    在此之前不要写任何东西,即使是 cmets。

    【讨论】:

    • 我确实再次尝试了pip3 install numpy,说“成功安装了 numpy-1.11.0”,但是当“导入 numpy”时我仍然有同样的错误
    • 我明白了。你的第一行是#!/usr/bin/python3 吗?
    • 我什至没有启动 python 文件。我只是在命令中输入 python3,然后“import numpy”。但是如果我尝试使用脚本,将#!/usr/bin/python3 import numpy 放入脚本中并启动它,它会得到同样的错误。
    • 好吧,如果 virtualenv -p python3 env 后跟 source env/bin/activate 然后启动 python3 也不起作用,我不知道出了什么问题。
    【解决方案3】:

    我遇到了同样的问题,花了我几个小时才弄明白。

    在我的例子中,PYTHONPATH 设置为 /usr/lib/python2.6/dist-packages/ 将其更改为 /Users/xxx/miniconda3/lib/python3.7/site-packages/ 解决了该问题。 祝你好运。

    【讨论】:

      【解决方案4】:

      我解决了这个问题,在 VS Code 上更改 Python 的版本。我使用的是 Python 3.7.4,现在使用的是 3.7.8。

      我安装 Numpy 时,它是存放在 Python3.6 的文件夹中的。所以我认为你可以尝试改变路径或者只是改变 Python 的版本

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-05
        • 2017-08-31
        • 1970-01-01
        • 2015-12-21
        • 2019-07-29
        • 2023-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多