2012-06-19 23 views
39

Tengo un problema extraño al intentar instalar una biblioteca de Python utilizando su archivo setup.py. Cuando ejecuto el archivo setup.py, recibo un error de importación, que dice ImportError: No module named Cython.Distutils, pero tengo un módulo así, y puedo importarlo en la línea de comandos de Python sin ningún problema. ¿Por qué podría estar recibiendo este error de importación?python ImportError: Cython.Distutils

He examinado unas pocas docenas de casos de errores de importación, he leído sobre importaciones y paquetes, etc., pero parece que no puedo resolverlo. Ahora estoy en el día dos y medio de estar estancado en este punto, así que creo que es hora de pedir ayuda.

La biblioteca se llama zenlib. 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 Python2.7 que viene con Ubuntu 12.04.

Más de fondo: Aquí es exactamente lo que consigo al intentar ejecutar setup.py:

[email protected]:~/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 comandos:

>>> 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 

Nota la primera importación funcionaba y el segundo 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 la distribución Enthought Python y no la pitón que viene con Ubuntu es lo que se ejecuta de forma predeterminada anteponiendo mi fiesta de variable de entorno PATH $ por edición ~/.bashrc, añadiendo 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 para intentar, entré en mi directorio de paquetes de sitio, (/usr/local/epd/lib/python2.7/site-packages) y darle permisos totales (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 se puede pensar qué probar después? ¿Algunas ideas?

+0

No puedo pensar en nada, pero lo que es en su 'sys.path' ? –

+2

¿'sudo python -c 'importa el trabajo de Cython.Distutils''? – jfs

+0

Mi experiencia arrojó el mismo resultado, di una instalación de Python 2.7 en ubuntu 12-04, cython, numpy, scipy. Mismo error Traza (última llamada más reciente): Archivo "setup.py", línea 4, en de Cython.Distutils import build_ext ImportError: Ningún módulo llamado Cython.Distutils. Ninguna de las respuestas parece haber resuelto esto. Estimados expertos AYUDA !!! – pythOnometrist

Respuesta

12

Su sudo no está recibiendo la pitón derecho. Este es un comportamiento conocido de sudo en Ubuntu. Consulte esto question para obtener más información. Es necesario asegurarse de que sudo llama el pitón derecho, ya sea mediante el uso de 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 
+0

Ha pasado un tiempo desde que publiqué esta pregunta, pero así fue cómo resolví el problema. Una publicación más reciente me recordó que todavía estaba abierta. Use la sugerencia de @ user91279 para encontrar la ruta correcta para usted. –

1

En los CLI-pitón, import sys y buscar lo que hay dentro sys.path
A continuación, intente utilizar export PYTHONPATH=whatyougot

-1

Sólo tiene que instalar Cython de http://cython.org/#download e instalarlo utilizando este comando

sudo python setup.py install 

A continuación, ejecute el comando

sudo python -c 'import Cython.Distutils' 

y se instalará y el mensaje de error desaparecerá.

4

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.

8

Run

which python

Esa es la ruta de acceso a la pitón de que el sistema no ha pagado demasiado continuación, vaya al método de @ tiago de:

sudo <output of which python> setup.py install

52

Instalar Cython:

pip install cython 
+0

Esto funcionó para mí, pero no para la última versión de cython [0.22], sino para una versión anterior 0.21.2 – dhilipsiva

0

Eso es fácil.

Primero puede probar el paquete install cython.

Se actualizará su easy_install construido en python.

3

Para uso python3

sudo apt-get install cython3 

Para uso python2

sudo apt-get install cython 

detalles pueden leerse en this

Cuestiones relacionadas