2012-01-06 3 views
7

Я пытаюсь установить Fabric в Virtualenv, но я получаю сообщение об ошибке. I'm usinh Python 2.7.2+Можно установить Fabric (Python) в Virtualenv? Получение ошибки

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 

Некоторые подсказки о том, что здесь не так?

С наилучшими пожеланиями,

ответ

15

Если вы используете Debian-приправленный Linux, вам необходимо установить python2.x-DEV Пакет

Sudo APT-получить установку python2.7-DEV

Это потому, что некоторые питона ЛИЭС только связывание с C libs, которые необходимо скомпилировать перед использованием, требуя от заголовков сделать это.

Использование ткани Парамико для подключения через SSH, который включает такие привязки.

Заголовки часто находятся в пакетах, называемых packagename-dev (debian) или packagename-develop (redhat). Здесь мы видим, что заголовок python.h отсутствует для python 2.7, поэтому мы устанавливаем python2.7-dev. Вам нужно будет сделать это только один раз для всех ваших wirtual envs, так как он установлен на системном уровне.

Эта же проблема возникает, если вы используете libs, которые относятся к другому продукту C, например mysql libs, для чего требуются заголовки mysql.

+1

@ e-satis большое спасибо за это замечательное дополнение! – vorushin

+1

Вы ответили на него как раз перед тем, как я это сделал, поэтому не было смысла делать дубликат :-) –

1

Вы должны позволить GCC знает языка Python включает путь и путь Lib.

Сначала вы должны найти свой Python include: & lib path.

Например:

/home/me/soft/include 

и

/home/me/soft/lib 

Затем экспортировать следующую вар в Баш

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

И

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

Это не единственный способ, но он должен работать для вас.