2012-01-06 15 views
7

Estoy tratando de instalar Fabric en Virtualenv pero me aparece un error. Estoy usinh Python 2.7.2+¿Es posible instalar Fabric (Python) en Virtualenv? Obteniendo un error

src/MD2.c:31:20: fatal error: Python.h: No such file or directory 

compilation terminated. 

error: command 'gcc' failed with exit status 1 

---------------------------------------- 
Command /home/andre/python_virtualenv/bin/python -c "import setuptools;__file__='/home/andre/python_virtualenv/build/pycrypto/setup.py'; exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-YGuAIj-record/install-record.txt --install-headers /home/andre/python_virtualenv/include/site/python2.7 failed with error code 1 
Storing complete log in /home/andre/.pip/pip.log 

Algunas pistas sobre lo que está mal aquí?

Best Regards,

Respuesta

15

Si utiliza con sabor a Debian Linux, es necesario instalar el paquete python2.X-dev

sudo apt-get install python2.7-dev

Esto se debe a que algunas bibliotecas de Python son solo vinculantes para C libs que deben compilarse antes de su uso, lo que requiere que los encabezados lo hagan.

Uso de la tela Paramiko para conectarse a través de SSH, que incluye tales enlaces.

Los encabezados suelen estar en paquetes llamados packagename-dev (debian) o packagename-develop (redhat). Aquí vemos que falta el encabezado python.h para Python 2.7, por lo que instalamos python2.7-dev. Tendrás que hacer eso solo una vez para todos tus entornos virtuales ya que está instalado a nivel de sistema.

El mismo problema aparece si usa libs que se relacionan con otros productos C, como mysql libs, que requerirán encabezados mysql.

+1

@ e-satis muchas gracias por esta gran adición! – vorushin

+1

Respondiste justo antes que yo, así que no sirvió para hacer un duplicado :-) –

1

Se necesitan dejar gcc conoce el pitón de ruta de inclusión y la ruta lib.

Primero debe encontrar su Python incluir & ruta lib.

Por ejemplo:

/home/me/soft/include 

y

/home/me/soft/lib 

A continuación, exporte la siguiente var en bash

export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/me/soft/include 

Y

export LD_LIBRARY_PATH=$C_INCLUDE_PATH:/home/me/soft/lib 

Esta no es la única manera, pero debería ser un trabajo para usted.

Cuestiones relacionadas