ImportError: невозможно импортировать имя 'multiarray'

Я установил Python3.6, как описано здесь:

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

Затем я установил NumPy следующим образом:

sudo apt-get install python3-numpy

Я думаю, что я могу импортировать Numpy из Python3.5, но не из Python3.6

Python 3.6.5 (default, Mar 29 2018, 03:28:50) 
[GCC 5.4.0 20160609] 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/python3/dist-packages/numpy/__init__.py", line 180, 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 14, in <module>
    from . import multiarray
ImportError: cannot import name 'multiarray'

Как исправить эту проблему?

1 ответ

У вас наверное есть numpy устанавливается только для вашего python3.5.

Вместо установки numpy через репозитории Ubuntu, вы можете попробовать установить и использовать pip,
Это менеджер пакетов Python. Вы можете использовать его для установки различных библиотек Python, таких как numpy,
Затем используйте его для установки numpy для вашего python3.6.

Установка pip:

устанавливать pip с помощью следующей команды:

apt install python-pip

Примечание: вы можете получить Permission denied ошибка. В этом случае просто введите префикс вашей команды sudo например:

sudo apt install python-pip

Затем введите свой терминал pip3.6 чтобы проверить, правильно ли он установлен. Он должен перечислить вам все доступные параметры.

Здесь обычно есть два варианта.

Вариант 1 - установить numpy глобально

устанавливать numpy специально для python3.6:

pip3.6 install numpy

Примечание. Опять же, если вы получили ошибку разрешения, добавьте к вашей команде префикс sudo:

sudo pip3.6 install numpy

Выход:

Collecting numpy
  Downloading https://files.pythonhosted.org/packages/71/90/ca61e203e0080a8cef7ac21eca199829fa8d997f7c4da3e985b49d0a107d/numpy-1.14.3-cp36-cp36m-manylinux1_x86_64.whl (12.2MB)
    100% |################################| 12.2MB 1.9MB/s 
Installing collected packages: numpy
Successfully installed numpy-1.14.3

Примечание: недостатком этого метода является то, что у вас есть numpy устанавливается глобально, что может привести к нежелательным последствиям в будущем, например, к проблемам с различными версиями.

Вариант 2 - использовать виртуальную среду:

Этот метод позволяет вам создать изолированную среду Python, если хотите, изолированную программную среду, в которую можно устанавливать пакеты Python, не беспокоясь о зависимостях, версиях и разрешениях.

Сначала необходимо установить модуль, необходимый для создания виртуальных сред:

sudo pip3.6 install virtualenv

Еще раз проверьте, если установка прошла успешно:

virtualenv --version

Следует напечатать версию без каких-либо сообщений об ошибках.

Теперь создайте виртуальную среду для python3.6 (к вашему сведению - для этого есть несколько способов):

virtualenv /directory/to/place/the/virtual/environment

например

virtualenv ~/Documents/numpy

Перейдите в этот каталог. Там должно быть несколько каталогов внутри. Мы ищем bin каталог.
Теперь вам нужно активировать эту виртуальную среду:

source bin/activate

Имя виртуальной среды должно появиться в левой части вашего терминала, например:

(numpy) user@hostname:numpy$

Это указывает на то, что виртуальная среда в настоящее время активна.

Хорошо, теперь вам нужно установить numpy:

pip3.6 install numpy

Выход:

Collecting numpy
  Using cached https://files.pythonhosted.org/packages/71/90/ca61e203e0080a8cef7ac21eca199829fa8d997f7c4da3e985b49d0a107d/numpy-1.14.3-cp36-cp36m-manylinux1_x86_64.whl
Installing collected packages: numpy
Successfully installed numpy-1.14.3

Теперь запустите вашу оболочку Python и попытайтесь импортировать ее:

>>> import numpy
>>> 

Там не должно быть никаких ошибок.
Теперь вы можете продолжить свою работу.

Когда вы закончите, вы можете деактивировать виртуальную среду. Просто введите:

deactivate

Индикатор на левой стороне должен исчезнуть.

Если что-то пойдет не так с вашей виртуальной средой, просто удалите каталог, в котором она содержится, и начните все сначала.

Примечание. Недостаток использования виртуальных сред заключается в том, что вам всегда нужно активировать и деактивировать их, но это значительно снижает вероятность путаницы в ваших глобально установленных библиотеках и настройках.

У меня была точно такая же проблема. В моей системе Ubuntu установлены python3.6 и python3.7. У меня был установлен numpy с помощью pip3. У меня такая же ошибка, когда я пытался импортировать numpy в python3.7.

Я заметил, что следующая строка номер 1 в / user / bin / pip3:

#!/usr/bin/python3

и мой python3 указывал на /usr/bin/python3.6

Для меня сработало следующее:

  1. Обновить python3

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/<python version> 1

Это заставит pip3 работать для вашей желаемой версии python3

  1. Удалите numpy, который был установлен для более старого python3

sudo pip3 uninstall numpy

  1. Установите numpy для желаемой версии python3

sudo pip3 install numpy

Это сработало!

У меня была такая же проблема, я исправил эту ошибку, обновив numpy пакет следующим образом:

sudo pip install -U numpy


[ПРИМЕЧАНИЕ]:

Если после этого вы столкнулись с этой ошибкой: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

Выполните следующую команду:

sudo apt-get install python3-tk
Другие вопросы по тегам