Можно ли установить Fabric (Python) в Virtualenv?Получение ошибки - PullRequest
7 голосов
/ 06 января 2012

Я пытаюсь установить Fabric в Virtualenv, но получаю сообщение об ошибке. Я использую Python 2.7.2 +

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

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

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

Ответы [ 2 ]

15 голосов
/ 06 января 2012

Если вы используете Linux со вкусом Debian, вам нужно установить пакет python2.x-dev

sudo apt-get install python2.7-dev

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

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

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

1 голос
/ 06 января 2012

Вам нужно, чтобы gcc знал путь включения Python и путь lib.

Сначала вам нужно найти путь к Python для включения и загрузки.

Например:

/home/me/soft/include

и

/home/me/soft/lib

Затем экспортируйте следующую переменную в bash

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

И

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

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

...