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

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

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

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

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

решение2

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

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

#!/usr/bin/python3

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

Мне помогло следующее:

  1. Обновление питона3

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

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

решение3

У меня была та же проблема, я исправил эту ошибку, обновив 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

Связанный контент