Подтвердить что ты не робот

Ошибка: команда "x86_64-linux-gnu-gcc" не удалась с статусом выхода 1 "в virtualenv

Окружающая среда: Linux Mint 17 Cinnamon.

Эта ошибка отображается:

error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

при попытке выполнить следующее в virtualenv:

pip install lxml
pip install pillow
pip install pycrypto
pip install pymongo (fails but still shows in pip freeze)

Здесь есть несколько решений, которые рекомендуют установить python2.7-dev:

Установка ошибки подушки: установка script завершена с ошибкой: команда "x86_64-linux-gnu-gcc" завершилась с статусом выхода 1

Установка lxml в virtualenv через ошибку установки пакета: команда 'x86_64-linux-gnu-gcc' не удалось

Ошибка установки подушки: команда 'gcc' не удалась с статусом выхода 1

фатальная ошибка: Python.h: нет такого файла или каталога

Меня смущает эта рекомендация, потому что я понимаю, что используя что-то вроде:

sudo apt-get install python2.7-dev

добавит это в основной * системный * экземпляр Python, а тот, который находится в virtualenv. (см. https://unix.stackexchange.com/a/56392/92486)

Можно ли добавить python2.7-dev только к версии Python virtualenv?

4b9b3361

Ответ 1

Я установил python2.7-dev через Synaptic Package Manager в Linux Mint 17.

Тогда я мог бы выполнить следующее в virtualenv:

pip install pillow
pip install pycrypto

И затем я установил libxml2-dev и libxslt1-dev через Synaptic и мог выполнить следующее:

pip install lxml

Я также сделал это, чтобы установка pymongo не имела ошибок:

pip uninstall pymongo
pip install pymongo  # i defined the version i needed ie pip install pymongo==2.6.2

Я все еще запутался, как это устраняет проблему, потому что я думал, что virtualenv - изолированная среда. Любые разъяснения об этом оцениваются.

Ответ 2

В большинстве случаев это проблемы с зависимостями.

После трассировки стека gcc-компилятора можно увидеть отсутствующие файлы. Иногда установка пакетов разработки Python недостаточна.

Например: Я попытался сделать pip install requests[security] в моем virtualenv foo. Это результат, который дал мне программа pip-installer.

Failed building wheel for cryptography
Running setup.py bdist_wheel for cffi
Stored in directory: /root/.cache/pip/wheels/99/e7/9a/68b1c8ca6f6f92b5feebd4d9434f50712b84f6a66d1285ea21
Successfully built cffi
Failed to build cryptography
Installing collected packages: cffi, cryptography, pyOpenSSL, ndg-httpsclient, requests
Running setup.py install for cryptography
Complete output from command /opt/foo/django-cms-virtualenv/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-eZaLAG/cryptography/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-BwgYTp-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/foo/django-cms-virtualenv/include/site/python2.7/cryptography:
running install
running build
running build_py
running egg_info
writing requirements to src/cryptography.egg-info/requires.txt
writing src/cryptography.egg-info/PKG-INFO
writing top-level names to src/cryptography.egg-info/top_level.txt
writing dependency_links to src/cryptography.egg-info/dependency_links.txt
writing entry points to src/cryptography.egg-info/entry_points.txt
warning: manifest_maker: standard file '-c' not found

reading manifest file 'src/cryptography.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'docs/_build'
warning: no previously-included files matching '*' found under directory 'vectors'
writing manifest file 'src/cryptography.egg-info/SOURCES.txt'
running build_ext
building '_Cryptography_cffi_a269d620xd5c405b7' extension
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.c -o build/temp.linux-x86_64-2.7/src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.o
src/cryptography/hazmat/bindings/__pycache__/_Cryptography_cffi_a269d620xd5c405b7.c:217:25: fatal error: openssl/aes.h: Datei oder Verzeichnis nicht gefunden
 #include <openssl/aes.h>
                         ^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

Важной частью является: #include <openssl/aes.h>

Компилятор делает довольно ясно, что он требует этого файла, но его нет в файловой системе.

Зная, что осталось только: установить необходимые библиотеки!

  • Узнайте, какой пакет необходим для вашего дистрибутива: например для Ubuntu вы можете перейти на сайт поиска пакетов Ubuntu и ввести недостающий файл, который вы ищете. В этом случае " aes.h"
  • Установите необходимые пакеты с помощью инструмента управления пакетами дистрибутивов: например для Ubuntu:

    aptitude install libssl-dev

  • Повторите попытку с помощью pip в вашем virtualenv:

    pip install requests[security]

Ответ 3

Работайте со мной:
Просто установите python2.7-dev сперва
sudo apt-get install python2.7-dev

Ответ 4

В Ubuntu 16.04.1 это сработало для меня:

sudo apt-get install libxml2-dev libxslt1-dev python-dev

Ответ 5

Для меня установка lxml не удалась при компиляции. Я выполнил инструкции по установке lxml и уменьшил оптимизацию компилятора:

sudo CFLAGS="-O0"  pip install lxml

После этого удалось скомпилировать lxml.

Ответ 6

Это может быть проблемой в пипе. Чтобы решить, попробуйте:

sudo apt-get удалить python-pip

Чтобы установить pip, безопасно загрузите get-pip.py.

https://bootstrap.pypa.io/get-pip.py

sudo python get-pip.py

Ответ 7

Библиотеке cffi требуется libffi-dev:

sudo apt-get install libffi libffi-dev

Ответ 8

Самый простой способ:

sudo apt-get build-dep python-imaging

а затем

pip install pillow

Ответ 9

Это работает для меня, 12.04, python2.7.6 для пакета lxml

sudo pip install libxml2 libxml2-dev libxslt1-dev
sudo pip install lxml