Не удалось установить пакет Python Cryptography с PIP и setup.py


256

Когда я пытаюсь установить пакет Cryptography для Python с помощью pip install cryptographyили загружая пакет с их сайта и работая python setup.py, я получаю следующую ошибку:


D:\Anaconda\Scripts\pip-script.py run on 02/27/14 16:13:17
Downloading/unpacking cryptography
  Getting page https://pypi.python.org/simple/cryptography/
  URLs to search for versions for cryptography:
  * https://pypi.python.org/simple/cryptography/
  Analyzing links from page https://pypi.python.org/simple/cryptography/
    Skipping https://pypi.python.org/packages/cp26/c/cryptography/cryptography-0.2-cp26-none-win32.whl#md5=13e5c4b19520e7dc6f07c6502b3f74e2 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp26/c/cryptography/cryptography-0.2.1-cp26-none-win32.whl#md5=00e733648ee5cdb9e58876238b1328f8 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp27/c/cryptography/cryptography-0.2-cp27-none-win32.whl#md5=013ccafa6a5a3ea92c73f2c1c4879406 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp27/c/cryptography/cryptography-0.2.1-cp27-none-win32.whl#md5=127d6a5dc687250721f892d55720a06c (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp32/c/cryptography/cryptography-0.2-cp32-none-win32.whl#md5=051424a36e91039807b72f112333ded3 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp32/c/cryptography/cryptography-0.2.1-cp32-none-win32.whl#md5=53f6f57db8e952d64283baaa14cbde3d (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp33/c/cryptography/cryptography-0.2-cp33-none-win32.whl#md5=302812c1c1a035cf9ba3292f8dbf3f9e (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Skipping https://pypi.python.org/packages/cp33/c/cryptography/cryptography-0.2.1-cp33-none-win32.whl#md5=81acca90caf8a45f2ca73f3f9859fae4 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python
    Found link https://pypi.python.org/packages/source/c/cryptography/cryptography-0.1.tar.gz#md5=bdc1c5fe069deca7467b71a0cc538f17 (from https://pypi.python.org/simple/cryptography/), version: 0.1
    Found link https://pypi.python.org/packages/source/c/cryptography/cryptography-0.2.1.tar.gz#md5=872fc04268dadc66a0305ae5ab1c123b (from https://pypi.python.org/simple/cryptography/), version: 0.2.1
    Found link https://pypi.python.org/packages/source/c/cryptography/cryptography-0.2.tar.gz#md5=8a3d21e837a21e1b7634ee1f22b06bb6 (from https://pypi.python.org/simple/cryptography/), version: 0.2
  Using version 0.2.1 (newest of versions: 0.2.1, 0.2, 0.1)
  Downloading from URL https://pypi.python.org/packages/source/c/cryptography/cryptography-0.2.1.tar.gz#md5=872fc04268dadc66a0305ae5ab1c123b (from https://pypi.python.org/simple/cryptography/)
  Running setup.py (path:c:\users\paco\appdata\local\temp\pip_build_Paco\cryptography\setup.py) egg_info for package cryptography
    In file included from c/_cffi_backend.c:7:0:
    c/misc_win32.h:225:23: error: two or more data types in declaration specifiers
    c/misc_win32.h:225:1: warning: useless type name in empty declaration [enabled by default]
    c/_cffi_backend.c: In function 'convert_array_from_object':
    c/_cffi_backend.c:1105:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1105:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1130:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1130:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1150:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1150:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'convert_struct_from_object':
    c/_cffi_backend.c:1183:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1183:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1196:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1196:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'cdata_repr':
    c/_cffi_backend.c:1583:13: warning: unknown conversion type character 'L' in format [-Wformat]
    c/_cffi_backend.c:1583:13: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1595:9: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1595:9: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'cdataowning_repr':
    c/_cffi_backend.c:1647:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1647:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function '_cdata_get_indexed_ptr':
    c/_cffi_backend.c:1820:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1820:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1820:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function '_cdata_getslicearg':
    c/_cffi_backend.c:1872:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1872:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1872:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'cdata_ass_slice':
    c/_cffi_backend.c:1951:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1951:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1951:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1969:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1969:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1969:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:1983:22: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:1983:22: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'cdata_call':
    c/_cffi_backend.c:2367:30: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:2367:30: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]
    c/_cffi_backend.c:2367:30: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'cast_to_integer_or_char':
    c/_cffi_backend.c:2916:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:2916:26: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]
    c/_cffi_backend.c:2916:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c:2928:26: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:2928:26: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]
    c/_cffi_backend.c:2928:26: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'new_array_type':
    c/_cffi_backend.c:3480:9: warning: unknown conversion type character 'l' in format [-Wformat]
    c/_cffi_backend.c:3480:9: warning: too many arguments for format [-Wformat-extra-args]
    c/_cffi_backend.c: In function 'b_complete_struct_or_union':
    c/_cffi_backend.c:3878:22: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:3878:22: warning: unknown conversion type character 'z' in format [-Wformat]
    c/_cffi_backend.c:3878:22: warning: too many arguments for format [-Wformat-extra-args]
    Traceback (most recent call last):
      File "<string>", line 17, in <module>
      File "c:\users\paco\appdata\local\temp\pip_build_Paco\cryptography\setup.py", line 113, in <module>
        "build": cffi_build,
      File "D:\Anaconda\lib\distutils\core.py", line 112, in setup
        _setup_distribution = dist = klass(attrs)
      File "build\bdist.win-amd64\egg\setuptools\dist.py", line 239, in __init__
      File "build\bdist.win-amd64\egg\setuptools\dist.py", line 264, in fetch_build_eggs
      File "build\bdist.win-amd64\egg\pkg_resources.py", line 580, in resolve
        dist = best[req.key] = env.best_match(req, ws, installer)
      File "build\bdist.win-amd64\egg\pkg_resources.py", line 818, in best_match
        return self.obtain(req, installer) # try and download/install
      File "build\bdist.win-amd64\egg\pkg_resources.py", line 830, in obtain
        return installer(requirement)
      File "build\bdist.win-amd64\egg\setuptools\dist.py", line 314, in fetch_build_egg
      File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 593, in easy_install

      File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 623, in install_item

      File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 809, in install_eggs

      File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 1015, in build_and_install

      File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 1003, in run_setup

    distutils.errors.DistutilsError: Setup script exited with error: command 'gcc' failed with exit status 1
    Complete output from command python setup.py egg_info:
    In file included from c/_cffi_backend.c:7:0:

c/misc_win32.h:225:23: error: two or more data types in declaration specifiers

c/misc_win32.h:225:1: warning: useless type name in empty declaration [enabled by default]

c/_cffi_backend.c: In function 'convert_array_from_object':

c/_cffi_backend.c:1105:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1105:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1130:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1130:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1150:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1150:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'convert_struct_from_object':

c/_cffi_backend.c:1183:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1183:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1196:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1196:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'cdata_repr':

c/_cffi_backend.c:1583:13: warning: unknown conversion type character 'L' in format [-Wformat]

c/_cffi_backend.c:1583:13: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1595:9: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1595:9: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'cdataowning_repr':

c/_cffi_backend.c:1647:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1647:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function '_cdata_get_indexed_ptr':

c/_cffi_backend.c:1820:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1820:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1820:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function '_cdata_getslicearg':

c/_cffi_backend.c:1872:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1872:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1872:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'cdata_ass_slice':

c/_cffi_backend.c:1951:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1951:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1951:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1969:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1969:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1969:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:1983:22: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:1983:22: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'cdata_call':

c/_cffi_backend.c:2367:30: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:2367:30: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]

c/_cffi_backend.c:2367:30: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'cast_to_integer_or_char':

c/_cffi_backend.c:2916:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:2916:26: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]

c/_cffi_backend.c:2916:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c:2928:26: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:2928:26: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'Py_ssize_t' [-Wformat]

c/_cffi_backend.c:2928:26: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'new_array_type':

c/_cffi_backend.c:3480:9: warning: unknown conversion type character 'l' in format [-Wformat]

c/_cffi_backend.c:3480:9: warning: too many arguments for format [-Wformat-extra-args]

c/_cffi_backend.c: In function 'b_complete_struct_or_union':

c/_cffi_backend.c:3878:22: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:3878:22: warning: unknown conversion type character 'z' in format [-Wformat]

c/_cffi_backend.c:3878:22: warning: too many arguments for format [-Wformat-extra-args]

Traceback (most recent call last):

  File "<string>", line 17, in <module>

  File "c:\users\paco\appdata\local\temp\pip_build_Paco\cryptography\setup.py", line 113, in <module>

    "build": cffi_build,

  File "D:\Anaconda\lib\distutils\core.py", line 112, in setup

    _setup_distribution = dist = klass(attrs)

  File "build\bdist.win-amd64\egg\setuptools\dist.py", line 239, in __init__

  File "build\bdist.win-amd64\egg\setuptools\dist.py", line 264, in fetch_build_eggs

  File "build\bdist.win-amd64\egg\pkg_resources.py", line 580, in resolve

    dist = best[req.key] = env.best_match(req, ws, installer)

  File "build\bdist.win-amd64\egg\pkg_resources.py", line 818, in best_match

    return self.obtain(req, installer) # try and download/install

  File "build\bdist.win-amd64\egg\pkg_resources.py", line 830, in obtain

    return installer(requirement)

  File "build\bdist.win-amd64\egg\setuptools\dist.py", line 314, in fetch_build_egg

  File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 593, in easy_install



  File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 623, in install_item



  File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 809, in install_eggs



  File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 1015, in build_and_install



  File "build\bdist.win-amd64\egg\setuptools\command\easy_install.py", line 1003, in run_setup



distutils.errors.DistutilsError: Setup script exited with error: command 'gcc' failed with exit status 1

----------------------------------------
Cleaning up...
  Removing temporary dir c:\users\paco\appdata\local\temp\pip_build_Paco...
Command python setup.py egg_info failed with error code 1 in c:\users\paco\appdata\local\temp\pip_build_Paco\cryptography
Exception information:
Traceback (most recent call last):
  File "D:\Anaconda\lib\site-packages\pip-1.5.4-py2.7.egg\pip\basecommand.py", line 122, in main
    status = self.run(options, args)
  File "D:\Anaconda\lib\site-packages\pip-1.5.4-py2.7.egg\pip\commands\install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "D:\Anaconda\lib\site-packages\pip-1.5.4-py2.7.egg\pip\req.py", line 1229, in prepare_files
    req_to_install.run_egg_info()
  File "D:\Anaconda\lib\site-packages\pip-1.5.4-py2.7.egg\pip\req.py", line 325, in run_egg_info
    command_desc='python setup.py egg_info')
  File "D:\Anaconda\lib\site-packages\pip-1.5.4-py2.7.egg\pip\util.py", line 697, in call_subprocess
    % (command_desc, proc.returncode, cwd))
InstallationError: Command python setup.py egg_info failed with error code 1 in c:\users\paco\appdata\local\temp\pip_build_Paco\cryptography

Я нашел другие сообщения об ошибках egg_info ( здесь и здесь ), но предоставленные там решения не решили мою проблему. Также я могу устанавливать другие пакеты через PIP.

PIP версия 1.5.4 setuptools версия 2.2


УКАЗАТЕЛЬ НА ВСЕХ - криптография теперь поставляется с предварительно собранными колесами для большинства ОС, поэтому pip installкриптография должна работать «из коробки».
Legorooj

Ответы:


427

У меня была похожая проблема, и я обнаружил, что мне просто не хватает зависимости (libssl-dev, для меня). Как указано в https://cryptography.io/en/latest/installation/ , убедитесь, что все зависимости соблюдены:

На винде

Если вы работаете в Windows, вам нужно убедиться, что у вас установлен OpenSSL. Доступны предварительно скомпилированные двоичные файлы. Если ваша установка находится в необычном месте, задайте в переменных среды LIB и INCLUDE соответствующие местоположения. Например:

C:\> \path\to\vcvarsall.bat x86_amd64
C:\> set LIB=C:\OpenSSL-1.0.1f-64bit\lib;%LIB%
C:\> set INCLUDE=C:\OpenSSL-1.0.1f-64bit\include;%INCLUDE%
C:\> pip install cryptography

Построение криптографии на Linux

Криптография должна очень легко собираться на Linux, если у вас есть компилятор C, заголовки для Python (если вы не используете pypy) и заголовки для библиотек OpenSSL и libffi, доступных в вашей системе.

Для Debian и Ubuntu следующая команда обеспечит установку необходимых зависимостей:

sudo apt-get install build-essential libssl-dev libffi-dev python-dev

Для Fedora и RHEL-производных следующая команда обеспечит установку необходимых зависимостей:

sudo yum install gcc libffi-devel python-devel OpenSSL-devel

Теперь вы должны быть в состоянии построить и установить криптографию с обычным.

pip install cryptography

1
Спасибо, сработало отлично! При наличии VS2010 мне пришлось: SET VS90COMNTOOLS =% VS100COMNTOOLS% и добавить суффикс «mt» к именам
библиотек

// Я могу подтвердить, что это работало на машине CEntOS 6.3 с Python 3.3 с ошибкой, аналогичной той, которая была опубликована в исходном вопросе.
Натан Басанезе

4
Кажется, что libffi-devпакет является ключом на всех. Мне не нужно было ничего настраивать, но это имя пакета не появилось в журнале ошибок: - / Спасибо.
m3nda

6
Не забудьте заменить python-devс , python3-devесли вы используете python3
Дуань

1
Я использую Debian 9, и мне пришлось выполнить apt-get install libssl1.0-dev, прежде чем я перестал получать ошибки во время криптографии
Майк Пеннингтон,

113

Это сокращенный вариант информации , найденной на криптографию в установке страницы Docs. Обратитесь к этой странице для последних деталей.

Так как этот вопрос продолжает появляться, я также опущу ответ (я один из разработчиков pyca / cryptography). Вот что вам нужно для надежной установки pyca / cryptography на 3 основные платформы.

Обратите внимание, что во всех этих случаях настоятельно рекомендуется устанавливать в virtualenv, а не в глобальное пространство пакетов. Это не относится только к криптографии, а является общим советом для обеспечения надежной установки Python. Глобальное пространство пакетов в ОС, при условии, что Pythons принадлежит системе, и установка вещей через pip вызывает в ней проблемы.

Windows

Обновите до последней версии (8.1.2 по состоянию на июнь 2016 года) и просто pip install cryptography

криптография и cffi поставляются как статически связанные колеса.

OS X

Обновите до последней версии (8.1.2 по состоянию на июнь 2016 года) и просто pip install cryptography

криптография и cffi поставляются как статически связанные колеса. Это будет работать для pyenv Python, системного Python, доморощенного Python и т. Д. Пока вы используете последний пип, вам даже не понадобится компилятор.

Linux

Начиная с версии 2.0 криптография поставляется с колесами Manylinux1. Это означает, что пользователям с pip 8.1+, работающим в дистрибутиве на основе glibc (почти все, кроме Alpine Linux) и x86 / x86-64 (извините, люди из Raspberry Pi) больше не нужен компилятор или заголовки, потому что вы получите предварительно скомпилированное колесо автоматически , Итак, первое, что вы должны попробовать, это обновить свой пункт!

Если вы не совместимы с manylinux1, то вот что вам нужно сделать:

Вам понадобится компилятор C, libffi + его заголовки разработки и openssl + его заголовки разработки.

Производные дистрибутивы Debian или Ubuntu

apt-get install build-essential libssl-dev libffi-dev python-dev с последующим

pip install cryptography

Производные от Red Hat

yum install gcc openssl-devel libffi-devel python-devel с последующим

pip install cryptography


1
Я сделал это, но я все еще получаю эту ошибку: «Не удалось построить колесо для криптографии», за которым следует много выходных данных (слишком много для комментариев).
RolandiXor

4
Ответ MacOSX работал как шарм на MacOS Sierra 10.12. Я обновил свой пип до последней версии на данный момент, 9.0.1.
Жоао Сантос

3
Обновитесь до последней версии pip (8.1.2 по состоянию на июнь 2016 года) и просто работайте с криптографией!
Тимоти Далтон

Я должен был вручную обновить мой, pipкоторый является старым, тогда решение OSX работает как шарм. ( pip 9.0.1, MacOS Sierra)
benjaminz

1
на моем windows10 не работает, ошибка сборки не может открыть включаемый файл: 'openssl / opensslv.h'
Totte Karlsson

43

Для тех из вас, кто работает под управлением OS X, вот что сработало для меня:

brew install openssl
env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include"
pip install cryptography

(Работает 10,9 Маверикс)

Вы также можете попробовать объединить флаги и команды pip со следующими комментариями:

brew install openssl
env ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptography

1
CFLAGS="-I/usr/include" pip install cryptography из Риперхалк работал на меня на Маверикс.
jjr4826

Эта команда в ответе не верна: вторая и третья строки должны быть объединены (используйте обратную косую черту). Тогда это работает отлично, только что протестировано на El Capitan. Этот комментарий выше также не является правильным. Другие настройки в ответе необходимы, иначе вы получите жалобы позже.
Кристиан Тисмер

1
Как всегда @nathancahill HEHE
Ник Вудхэмс

1
Я должен был использовать exportне env, но в остальном работает.
Ричард

$ ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographyработал для меня macOS 10.12с Python3.7(в virtualenv), когда нужно cryptographyдля того, чтобы установить ansible.
Джаланб

23

Это сработало для меня в Эль-Капитане

brew install pkg-config libffi openssl
env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography

Вы также можете проверить ветку здесь: https://github.com/pyca/cryptography/issues/2350


Это первый на этой странице (и многие, многие другие ...), который работал для меня в Мохаве 10.14.5, спасибо. Также похоже, что переменные среды активны только для команды, а не для сеанса, как в другом месте.
Chris

23

Это решило проблему для меня (Ubuntu 16.04):

sudo apt-get install build-essential libssl-dev libffi-dev python-dev python3-dev

и тогда это работало так:

pip install cryptography
pip install pyopenssl ndg-httpsclient pyasn1

14

Очевидно, что в последних версиях OSX это может быть вызвано тем, что Apple выпустила собственную версию OpenSSL, которая не работает с библиотекой криптографии.

Последние версии библиотеки криптографии поставляются со своими собственными зависимостями, но для их получения вам потребуется обновить pip и, возможно, также виртуальную среду. Так что для меня решение было:

pip install --upgrade --force-reinstall pip virtualenv

переустановка virtualenv сделала это для меня, она использовала старую версию pip, которая продолжала давать сбои, спасибо!
Адри Ван Хоудт

Все еще терпит неудачу для меня. OSX 10.11.3 El Capitan здесь.
agondiken

14

Как я решил «Не удалось очистить каталог сборки для криптографии»
(я пришел сюда из Google, чтобы найти эту ошибку.)

примечание : использование virtualenv

TL; DR:

мой файл /etc/apt/sources.listне был правильно настроен для моего Debian 8.

Пояснения:

Я хотел установить парамико. Парамико нужна криптография.

Я получил эти ошибки: сначала с pip install cryptography:

(...)
  ----------------------------------------
  Failed cleaning build dir for cryptography
Failed to build cryptography
(...)
    ----------------------------------------
Command "/home/myuser/pyenvs/testo/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-HXWKAO/cryptography/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-WjqY6V-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/myuser/pyenvs/testo/include/site/python2.7/cryptography" failed with error code 1 in /tmp/pip-build-HXWKAO/cryptography/

а затем с sudo apt-get install build-essential:

Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 build-essential : Depends: libc6-dev but it is not going to be installed > or
                            libc-dev
                   Depends: gcc (>= 4:4.4.3) but it is not going to be installed
                   Depends: g++ (>= 4:4.4.3) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

(Не совсем те же ошибки, что и у OP, но я здесь, чтобы помочь в конце концов )

Решение:

После тестирования почти каждой команды из каждого сообщения, я в итоге захожу на
https://wiki.debian.org/SourcesList
и копирую в файл мой соответствующий конфиг/etc/apt/sources.list

затем:

sudo aptitude update

а потом

sudo apt-get install build-essential libssl-dev libffi-dev python-dev

а потом

pip install cryptography

НТН


Решил мою проблему на сервере Ubuntu 16.04. Спасибо
Альтаф Хуссейн

14

Я пробовал много решений выше, но только после установки следующей библиотеки я смог установить cryptography:

sudo apt install libssl1.0

Я использую Ubuntu 18.04, но он будет работать и на Ubuntu 18.10.


1
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.
Nic3500

1
Это сработало для меня. Почему это работает? В чем разница между этим пакетом, который устанавливает libssl1.0-dev и libssl-dev?
Крис

2
Я не понимаю, почему, но только это мне тоже помогло
дюс

У меня тоже сработало. Хотя pip все еще получает ошибку сегментации после объявления об успешной установке, но я думаю, что это просто проблема pip.
Роб Мошер


7

Ответ Ника Вудхэма не работал для меня на OSX 10.11 El Capitan, но это сработало.

brew install openssl
CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptography==0.8

Это было ближе к работе для меня, но также не удалось .. El Capitan OSX 10.11.3 здесь. ошибка с кодом ошибки 1 в / private / var / folder / d9 / 75cfznt17cjc124j3stq3qc40000gn / T / pip-build-Q_JjdE / cryptography /
agondiken

Я должен был использовать, CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographyи это установлено. Я должен был также добавить, LDFLAGS="-L/usr/local/opt/openssl/lib"чтобы загрузить библиотеку. Кажется, что комментарий Дина Кристиана Армады делает то же самое, но с использованием сгенерированных brew переменных вместо жесткого кодирования.
spig

4

Если вы используете python3, вам нужно установить python3-dev. Это исправило мою проблему sudo apt-get install python3-dev.


4

У меня были проблемы с установкой cryptography==1.7.1на Ubuntu 16.04, и ни один из ответов выше не помог. Итак, я обновил требование до совместимого 1.8.2, и установка прошла успешно. Обратите внимание, что вам все равно понадобятся основы сборки и другие зависимости, упомянутые в верхнем (наиболее одобренном) ответе .


3

У меня была проблема с запуском, sudo pip install cryptographyпотому что он не нашел ffi при попытке компиляции. (OSX - Йосемити)

Я решил это, загрузив libffi и настроив env var.

$ brew install pkg-config libffi
$ export PKG_CONFIG_PATH=/usr/local/Cellar/libffi/3.0.13/lib/pkgconfig/
$ pip install cryptography

У меня были проблемы с pip при установке bcrypt, потому что cffi не удалось установить, но это исправило и для cffi, и для bcrypt. Спасибо!
радиантрадон

Это не сработало для меня на Эль-Капитане. Также обратите внимание на паразитный период в конце «pip install cryptography».
шейкер

@shacker У меня нет эль-капитана, поэтому я не могу это проверить, но удаляю беспризорный период, спасибо.
ThinkBonobo

@shacker Посмотри мой ответ, братан, для инсталляции El Capitan
Дин Кристиан Армада


3

Если вы создаете дистрибутив пакета Python в .gitlab-ci.yml файла для GitLab CI , который использует gitlab бегун развернутую в машине AWS EC2

 - apk add --update alpine-sdk && \
 - apk add libffi-dev openssl-dev && \
 - apk --no-cache --update add build-base

1
Приветствия, отлично работали в альпийском контейнере докера!
Алекс Сабо

2

Я заметил, что оригинальный постер явно использовал установку Windows ... и лучшие ответы выше для всех ОС ... так что здесь. Это предполагает, что вы установили Python 2.7, который является наиболее широко поддерживаемой (хотя и старой) версией.

  1. Установите « Компилятор Visual C ++ для Python» »
  2. Откройте окно командной строки администратора
  3. Перезапустите pip install (пакет), например

    cd C:\Python27\Scripts
    pip install cryptography  (or pycrypto, fabric, etc)

2

Я недавно столкнулся с подобной проблемой. В моем случае версии cffiи cryptographyнаписанные в файле require.txt несовместимы (cffi == 1.8.9 и криптография == 1.9). Я решил обновить cffiс последней доступной версией.


1

На самом деле я столкнулся с той же проблемой, пытаясь установить Scrapy, которая зависит от того, какая криптография была установлена ​​первой. Я нахожусь на Win764-bit с установленным Python 2.7 64-bit. Ответ @ jsonm в конечном итоге сработал для меня, но сначала мне пришлось скопировать C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvarsx86_amd64.batв x86_amd64subdir в этом каталоге bin, чтобы vcvarsall.batон перестал выдавать ошибку, говоря, что в нем отсутствует конфигурация. Если вам нужно настроить env vars для другой установки, обязательно скопируйте в соответствующий файл vcvars bat в соответствующий subdir, иначе первая команда ниже может не сработать.

Затем я запустил следующее из командной строки в соответствии с инструкциями @ jsonm (настроено для моей конфигурации) ...

C:\> "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64 
C:\> set LIB=C:\OpenSSL-Win64\lib;%LIB% 
C:\> set INCLUDE=C:\OpenSSL-Win64\include;%INCLUDE% 
C:\> pip install cryptography

И это сработало.



1

я загрузил полный исходный код paramiko из pypi и сделал

Python setup.py установить

это работало без нареканий

все стандартные пакеты pythondev / openssl / libffi уже присутствуют в rhel.

загрузка rpms имеет несоответствие rpm и больше проблем


0

У меня та же проблема:

pip install cryptography

.
.
.
Installing collected packages: cffi, cryptography
     Running setup.py install for cffi ... error

Затем я устанавливаю libffi-devel и проблема решается

yum install libffi-devel

0

Эти две команды исправили это для меня:

brew install openssl
brew link openssl --force

Источник: https://github.com/phusion/passenger/issues/1630#issuecomment-147527656


1
Я настоятельно рекомендую не делать этого brew link openssl --forceна OS X. Вместо этого просто обновите ваш pip до последней версии, и он установит статически связанное колесо для cffi и криптографии без проблем.
Пол Керер

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.