ImportError: no se puede importar el nombre 'multiarray'

ImportError: no se puede importar el nombre 'multiarray'

Instalé Python3.6 como se describeaquí:

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

Luego instalé numpy de la siguiente manera:

sudo apt-get install python3-numpy

Supongo que puedo importar numpy desde Python3.5 pero no desde 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'

¿Cómo arreglar este problema?

Respuesta1

Probablemente lo hayas numpyinstalado solo para tu python3.5.

En lugar de instalar numpya través de los repositorios de Ubuntu, puedes intentar instalar y usar pip.
Este es el administrador de paquetes de Python. Puedes usarlo para instalar varias bibliotecas de Python como numpy.
Luego úselo para instalarlo numpyen su python3.6.

Instalación pip:

Instalar pipcon el siguiente comando:

apt install python-pip

Nota:Es posible que reciba un Permission deniederror. En este caso, simplemente anteponga su comando con, sudopor ejemplo:

sudo apt install python-pip

Luego escribe tu terminal pip3.6para comprobar si lo tienes instalado correctamente. Debería enumerar todos sus parámetros disponibles.

Generalmente hay dos opciones a partir de aquí.

Opción 1: instalar numpyglobalmente

Instale numpyespecíficamente para python3.6:

pip3.6 install numpy

Nota:Nuevamente, si recibe un error de permiso, anteponga su comando con sudo:

sudo pip3.6 install numpy

La salida:

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

Nota:El inconveniente de este método es que se ha numpyinstalado globalmente, lo que puede provocar efectos no deseados en algún momento en el futuro, como problemas con diferentes versiones.

Opción 2: utilizar un entorno virtual:

Este método le permite crear un entorno Python aislado, una zona de pruebas si lo desea, donde puede instalar paquetes de Python, sin preocuparse tanto por las dependencias, versiones y permisos.

Primero, necesita instalar el módulo necesario para crear entornos virtuales:

sudo pip3.6 install virtualenv

Nuevamente, verifique si la instalación fue exitosa:

virtualenv --version

Debería imprimir la versión sin ningún mensaje de error.

Ahora cree un entorno virtual para python3.6 (para su información, hay varias formas de lograrlo):

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

p.ej

virtualenv ~/Documents/numpy

Navegue hasta ese directorio. Debería haber varios directorios dentro de él. Estamos buscando el bindirectorio.
Ahora necesitas activar ese entorno virtual:

source bin/activate

El nombre del entorno virtual debería aparecer en el lado izquierdo de su terminal, por ejemplo:

(numpy) user@hostname:numpy$

Indica que el entorno virtual está actualmente activo.

Ok, ahora necesitas instalar numpy:

pip3.6 install numpy

Producción:

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

Ahora inicia tu shell de Python e intenta importarlo:

>>> import numpy
>>> 

No debería haber errores.
Ahora puedes continuar con tu trabajo.

Cuando hayas terminado podrás desactivar el entorno virtual. Sólo tipo:

deactivate

El indicador del lado izquierdo debería haber desaparecido.

Si algo sale mal con su entorno virtual, simplemente elimine el directorio que lo contiene y comience de nuevo.

Nota:El inconveniente de utilizar entornos virtuales es que siempre es necesario activarlos y desactivarlos, pero reduce drásticamente el cambio de estropear las bibliotecas y configuraciones instaladas globalmente.

Respuesta2

Tuve exactamente el mismo problema. Tengo python3.6 y python3.7 instalados en mi sistema Ubuntu. Instalé numpy usando pip3. Recibí el mismo error cuando intenté importar numpy en python3.7.

Observé que la siguiente línea número 1 en /user/bin/pip3 es

#!/usr/bin/python3

y mi python3 apuntaba a /usr/bin/python3.6

Lo siguiente funcionó para mí:

  1. Actualizar python3

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

Esto hará que pip3 funcione para la versión deseada de python3.

  1. Desinstale el numpy que se instaló para python3 anterior

sudo pip3 uninstall numpy

  1. Instale numpy para la versión deseada de python3

sudo pip3 install numpy

¡Esto funcionó!

Respuesta3

Tuve el mismo problema, solucioné este error actualizando el numpypaquete de la siguiente manera:

sudo pip install -U numpy


[NOTA]:

Si después de eso te encuentras con este error:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

Haz el siguiente comando:

sudo apt-get install python3-tk

información relacionada