python - ImportError: Ningún módulo llamado Cython.Distutils
enthought (9)
Tengo un problema extraño al intentar instalar la biblioteca de Python zenlib
, utilizando su archivo setup.py
. Cuando ejecuto el archivo setup.py
, setup.py
un error de importación que dice
ImportError: Ningún módulo llamado Cython.Distutils`
pero tengo un módulo así, y puedo importarlo en la línea de comando de Python sin ningún problema. ¿Por qué podría estar recibiendo este error de importación?
Creo que el problema puede tener que ver con el hecho de que estoy usando Enthought Python Distribution , que instalé de antemano, en lugar de usar el Python 2.7 que viene con Ubuntu 12.04.
Más información: esto es exactamente lo que obtengo cuando intento ejecutar setup.py:
enwe101@enwe101-PCL:~/zenlib/src$ sudo python setup.py install
Traceback (most recent call last):
File "setup.py", line 4, in <module>
from Cython.Distutils import build_ext
ImportError: No module named Cython.Distutils
Pero funciona desde la línea de comando:
>>> from Cython.Distutils import build_ext
>>>
>>> from fake.package import noexist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named fake.package
Tenga en cuenta que la primera importación funcionó y la segunda arroja un error. Compare esto con las primeras líneas de setup.py:
#from distutils.core import setup
from setuptools import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import os.path
Me aseguré de que Enthought Python Distribution y no el python que venía con Ubuntu es lo que se ejecuta de manera predeterminada al anteponer mi variable de entorno bash $ PATH editando ~/.bashrc
, agregando esto como la última línea:
export PATH=/usr/local/epd/bin:$PATH
y de hecho, which python
escupe /usr/local/epd/bin/python
... sin saber qué más probar, /usr/local/epd/bin/python
directorio de paquetes de mi sitio, ( /usr/local/epd/lib/python2.7/site-packages
) y otorgar permisos completos (r, w, x) a Cython
, Distutils
, build_ext.py
y los archivos __init__.py
. Probablemente sea una tontería intentarlo, y no cambió nada.
No puedo pensar qué probar después? ¿Algunas ideas?
Ejecutar los siguientes comandos resolvió el problema para mí en ubuntu 14.04:
sudo apt-get install python-dev
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libsystemd-daemon-dev
sudo pip install cython
Este enlace me ayudó: https://github.com/trezor/python-trezor/issues/40
En CLI-python, importa sys y mira lo que hay dentro de sys.path
Luego intente usar export PYTHONPATH=whatyougot
Eso es fácil.
Puede intentar install cython
paquete install cython
primero.
Mejorará tu easy_install integrado en python.
Instalar Cython:
pip install cython
Para el uso de python3
sudo apt-get install cython3
Para el uso de python2
sudo apt-get install cython
Los detalles se pueden leer en this
Simplemente instala Cython desde http://cython.org/#download e instálalo usando este comando
sudo python setup.py install
Luego ejecuta el comando
sudo python -c ''import Cython.Distutils''
y se instalará y el mensaje de error desaparecerá.
Solo tengo un consejo para ti: crea un virtualenv. Esto garantizará que solo tenga una versión de python y todos sus paquetes instalados localmente (y no en todo su sistema).
Debería ser una de las soluciones.
Tu sudo no está recibiendo la pitón correcta. Este es un comportamiento conocido de sudo en Ubuntu. Vea esta question para más información. Debes asegurarte de que sudo llame al python correcto, ya sea usando la ruta completa:
sudo /usr/local/epd/bin/python setup.py install
o haciendo lo siguiente (en bash):
alias sudo=''sudo env PATH=$PATH''
sudo python setup.py install
correr
which python
Esa es la ruta a la pitón que su sistema también ha predeterminado, luego vaya al método de @ tiago de:
sudo <output of which python> setup.py install