Nie udało się zainstalować pakietu Python Cryptography z PIP i setup.py


256

Gdy próbuję zainstalować pakiet kryptograficzny dla Pythona za pośrednictwem jednego z nich pip install cryptographylub pobierając pakiet z ich witryny i uruchamiając python setup.py, pojawia się następujący błąd:


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

Znalazłem inne posty z błędami egg_info ( tu i tutaj ), ale przedstawione tam rozwiązania nie rozwiązałyby mojego problemu. Ponadto jestem w stanie zainstalować inne pakiety za pośrednictwem PIP.

Wersja PIP 1.5.4 setuptools wersja 2.2


WSKAŹNIK DLA KAŻDEGO - kryptografia dostarcza teraz koła do wstępnej budowy dla większości systemów operacyjnych, więc pip installkryptografia powinna działać od razu po wyjęciu z pudełka.
Legorooj

Odpowiedzi:


427

Miałem podobny problem i stwierdziłem, że po prostu brakuje mi zależności (libssl-dev, dla mnie). Zgodnie z https://cryptography.io/en/latest/installation/ upewnij się, że wszystkie zależności są spełnione:

W systemie Windows

Jeśli korzystasz z systemu Windows, musisz upewnić się, że masz zainstalowany OpenSSL. Dostępne są wstępnie skompilowane pliki binarne. Jeśli instalacja znajduje się w nietypowej lokalizacji, ustaw zmienne środowiskowe LIB i INCLUDE, aby uwzględnić odpowiednie lokalizacje. Na przykład:

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

Budowanie kryptografii w systemie Linux

kryptografia powinna się bardzo łatwo budować na Linuksie, pod warunkiem, że masz kompilator C, nagłówki dla Pythona (jeśli nie używasz pypy) oraz nagłówki dla bibliotek OpenSSL i bibliotek libffi dostępnych w twoim systemie.

W przypadku Debiana i Ubuntu następujące polecenie zapewni zainstalowanie wymaganych zależności:

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

W przypadku Fedory i pochodnych RHEL następujące polecenie zapewni zainstalowanie wymaganych zależności:

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

Powinieneś być teraz w stanie zbudować i zainstalować kryptografię w zwykły sposób.

pip install cryptography

1
Dzięki, działało idealnie! Po VS2010 musiałem: USTAWIĆ VS90COMNTOOLS =% VS100COMNTOOLS% i dodać sufiks „mt” do nazw lib
Maciek

//, mogę potwierdzić, że działało to na komputerze CEntOS 6.3 z Pythonem 3.3 z podobnym błędem jak ten opublikowany w pierwotnym pytaniu.
Nathan Basanese

4
Wydaje się, że ten libffi-devpakiet jest w ogóle kluczem. Nie musiałem nic więcej konfigurować, ale nazwa tego pakietu nie pojawiła się w dzienniku błędów: - / Dziękuję.
m3nda,

6
Nie zapomnij, aby zastąpić python-devw python3-devprzypadku korzystania python3
Duan

1
FWIW Korzystam z Debiana 9 i musiałem wykonać apt-get install libssl1.0-dev, zanim przestałem otrzymywać błędy podczas kryptografii instalacji pip
Mike Pennington

113

To jest skrócona wersja informacji znajdujących się na stronie dokumentacji instalacyjnej kryptografii . Sprawdź tę stronę, aby uzyskać najnowsze informacje.

Ponieważ wciąż pojawia się to pytanie SO, tutaj też zostawię odpowiedź (jestem jednym z programistów pyca / cryptography). Oto, czego potrzebujesz, aby niezawodnie zainstalować pyca / kryptografię na 3 głównych platformach.

Należy pamiętać, że we wszystkich tych przypadkach zdecydowanie zaleca się instalację w virtualenv, a nie w globalnej przestrzeni pakietów. Nie jest to specyficzne dla kryptografii, ale raczej ogólna rada, aby zapewnić niezawodność instalacji Pythona. Globalna przestrzeń pakietów w systemie operacyjnym pod warunkiem, że Python jest własnością systemu, a instalacja rzeczy za pomocą pipa wymaga problemów.

Windows

Uaktualnij do najnowszej wersji PIP (8.1.2 od czerwca 2016 r.) I tylko pip install cryptography

zarówno kryptografia, jak i cffi są dostarczane jako koła połączone statycznie.

OS X

Uaktualnij do najnowszej wersji PIP (8.1.2 od czerwca 2016 r.) I tylko pip install cryptography

zarówno kryptografia, jak i cffi są dostarczane jako koła połączone statycznie. Będzie to działać dla Pyenv Python, Python systemowy, Homebrew Python itp. Dopóki korzystasz z najnowszego pipa, nie potrzebujesz nawet kompilatora.

Linux

Od wersji 2.0 kryptografia dostarcza koła manylinux1. Oznacza to, że użytkownicy z pipem 8.1+ pracujący w dystrybucji opartej na glibc (prawie wszystko oprócz Alpine Linux) i na x86 / x86-64 (przepraszam ludzi Raspberry Pi) nie potrzebują już kompilatora ani nagłówków, ponieważ automatycznie otrzymamy prekompilowane koło . Pierwszą rzeczą, którą powinieneś spróbować, jest uaktualnienie swojego pipa!

Jeśli nie jesteś kompatybilny z manylinux1, oto co musisz zrobić:

Będziesz potrzebował kompilatora C, libffi + jego nagłówki programistyczne i openssl + jego nagłówki programistyczne.

Dystrybucje pochodzące z Debiana lub Ubuntu

apt-get install build-essential libssl-dev libffi-dev python-dev śledzony przez

pip install cryptography

Rozkłady pochodne Red Hat

yum install gcc openssl-devel libffi-devel python-devel śledzony przez

pip install cryptography


1
Zrobiłem to, ale wciąż pojawia się ten błąd: „Nieudane budowanie koła do kryptografii”, a następnie dużo danych wyjściowych (za dużo, by komentować).
RolandiXor

4
Odpowiedź MacOSX działała jak urok na MacOS Sierra 10.12. Zaktualizowałem mój pip do najnowszej wersji 9.0.1.
João Santos

3
Zaktualizuj do najnowszej wersji PIP (8.1.2 od czerwca 2016 r.) I po prostu działa instalacja kryptograficzna PIP!
Timothy Dalton,

Musiałem ręcznie zaktualizować mój, pipktóry jest stary, a następnie rozwiązanie OSX działa jak urok. ( pip 9.0.1, MacOS Sierra)
benjaminz

1
nie działa na moim systemie Windows 10, błąd kompilacji nie można otworzyć dołącz plik: 'openssl / opensslv.h'
Totte Karlsson

43

Dla tych, którzy używają OS X, oto, co zadziałało dla mnie:

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

(Uruchamianie 10.9 Mavericks)

Możesz także spróbować scalić flagi i polecenia pip z następującymi komentarzami:

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 od reaperhulk pracował dla mnie na Mavericks.
jjr4826

To polecenie w odpowiedzi jest nieprawidłowe: druga i trzecia linia muszą zostać scalone (użyj odwrotnego ukośnika). Potem działa idealnie, właśnie przetestowane na El Capitan. Powyższy komentarz jest również niepoprawny. Inne ustawienia w odpowiedzi są konieczne, w przeciwnym razie otrzymasz późniejsze reklamacje.
Christian Tismer

1
Jak zawsze @nathancahill HEHE
Nick Woodhams

1
Musiałem użyć exportnie env, ale inaczej działa.
Richard

$ ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographypracował dla mnie macOS 10.12z Python3.7(w virtualenv), kiedy trzeba cryptography, aby zainstalować ansible.
jalanb

23

To działało dla mnie w El Capitan

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

Możesz również sprawdzić wątek tutaj: https://github.com/pyca/cryptography/issues/2350


To pierwsza strona na tej stronie (i wiele, wiele innych ...), która działała dla mnie w Mojave 10.14.5, dzięki. Podobnie, zmienne środowiskowe są aktywne tylko dla polecenia, a nie dla sesji, jak gdzie indziej.
Chris,

23

To rozwiązało problem dla mnie (Ubuntu 16.04):

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

a potem działało tak:

pip install cryptography
pip install pyopenssl ndg-httpsclient pyasn1

14

Najwyraźniej w najnowszych wersjach OSX może to być spowodowane wysyłką przez Apple własnej wersji OpenSSL, która nie działa z biblioteką kryptograficzną.

Najnowsze wersje biblioteki kryptograficznej są dostarczane z własnymi natywnymi zależnościami, ale aby je uzyskać, musisz zaktualizować pip, a być może także wirtualną środowisko. Dla mnie rozwiązaniem było:

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

reinstalacja virtualenv zrobiła to dla mnie, używała starej wersji pipa, która ciągle zawodziła, dziękuję!
Adri Van Houdt,

Nadal mi się nie udaje. OSX 10.11.3 El Capitan tutaj.
agondiken 27.04.16

14

Jak rozwiązałem „Niepowodzenie czyszczenia kompilacji katalogu do kryptografii”
(przybyłem tutaj z Google, aby uzyskać wynik tego błędu).

Uwaga : za pomocą virtualenv

TL; DR:

mój plik /etc/apt/sources.listnie został poprawnie skonfigurowany dla mojego debiana 8.

Objaśnienia:

Chciałem zainstalować Paramiko. Paramiko potrzebuje kryptografii.

Mam te błędy: po pierwsze z 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/

a następnie z 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.

(Nie dokładnie takie same błędy jak PO, ale jestem tutaj, aby pomóc w końcu )

Rozwiązywanie:

Po przetestowaniu prawie każdego polecenia z każdego postu kończę na
https://wiki.debian.org/SourcesList
i skopiowałem wkleiłem moją odpowiednią konfigurację do pliku/etc/apt/sources.list

następnie:

sudo aptitude update

i wtedy

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

i wtedy

pip install cryptography

hth


Rozwiązałem mój problem na serwerze Ubuntu 16.04. Dzięki
Altaf Hussain

14

Próbowałem wielu rozwiązań powyżej, ale dopiero po instalacji następującej biblioteki mogłem zainstalować cryptography:

sudo apt install libssl1.0

Używam Ubuntu 18.04, ale będzie działać również na Ubuntu 18.10.


1
Chociaż ten kod może odpowiedzieć na pytanie, zapewnienie dodatkowego kontekstu dotyczącego tego, jak i / lub dlaczego rozwiązuje problem, poprawiłoby długoterminową wartość odpowiedzi.
Nic3500,

1
To zadziałało dla mnie. Dlaczego to zadziałało? Jaka jest różnica między tym pakietem, który instaluje libssl1.0-dev i libssl-dev?
Chris

2
Nie rozumiem dlaczego, ale tylko to mi pomogło
dyus

Pracowałem też dla mnie. Chociaż pip nadal ma błąd segmentacji po ogłoszeniu pomyślnej instalacji, ale myślę, że to tylko problem z pipem.
Rob Mosher


7

Odpowiedź Nicka Woodhama nie działała dla mnie na OSX 10.11 El Capitan, ale tak się stało.

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

To najbardziej mi się podobało, ale również nie powiodło się. El Capitan OSX 10.11.3 tutaj. nie powiodło się z kodem błędu 1 w / private / var / foldery / d9 / 75cfznt17cjc124j3stq3qc40000gn / T / pip-build-Q_JjdE / cryptography /
agondiken

Musiałem użyć CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographyi został zainstalowany. Musiałem również dodać, LDFLAGS="-L/usr/local/opt/openssl/lib"aby biblioteka mogła się załadować. Wydaje się, że komentarz Deana Christiana Armady robi to samo, ale używa zmiennych wygenerowanych przez napar zamiast kodować na stałe.
spig

4

Jeśli używasz Python3, musisz zainstalować python3-dev. To naprawiło mój problem sudo apt-get install python3-dev.



3

Miałem problem z uruchomieniem, sudo pip install cryptographyponieważ nie mógł znaleźć FFI podczas próby kompilacji. (OSX - Yosemite)

Rozwiązałem to, pobierając libffi i konfigurując env var.

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

Miałem problemy z instalacją pip bcrypt, ponieważ nie udało się zainstalować cffi, ale to naprawiło to zarówno dla cffi, jak i bcrypt. Dziękuję Ci!
radiantradon

Nie działało to dla mnie na El Capitan. Zwróć także uwagę na okres zabłąkania na końcu „kryptografii instalacji pip”.
shacker

@shacker Nie masz El Capitan, więc nie mogę przetestować tego, ale usunąłem okres bezdomności dzięki.
ThinkBonobo,

@shacker Sprawdź moją odpowiedź bracie dla instalacji El Capitan
Dean Christian Armada

3

Działa to na El Capitan z MacPorts:

$ sudo port install openssl
$ env LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include" pip install cryptography

3

Jeśli budujesz dystrybucji pakietu Python w .gitlab-ci.yml akt dla GitLab CI, który używa runner gitlab wdrożony w maszynie AWS EC2

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

1
Pozdrawiam, działało świetnie w alpejskim pojemniku dokującym!
Alex Szabó

2

Zauważyłem, że oryginalny plakat wyraźnie używał instalacji systemu Windows ... a najlepsze odpowiedzi powyżej dotyczą wszystkich innych systemów operacyjnych ... więc proszę bardzo. Zakłada się, że zainstalowałeś Python 2.7, który jest najczęściej obsługiwaną (choć starą) wersją.

  1. Zainstaluj „ Visual C ++ Compiler for Python
  2. Otwórz okno wiersza polecenia administracyjnego
  3. Uruchom ponownie pip install (pakiet) np

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

2

Ostatnio spotkałem podobny problem. W moim przypadku wersje cffii cryptographynapisane w wymagania.txt nie były kompatybilne (cffi == 1.8.9 i kryptografia == 1.9). Rozwiązałem aktualizację cffiza pomocą ostatniej dostępnej wersji.


1

Tak naprawdę natknąłem się na ten sam problem, próbując zainstalować Scrapy, który zależy od zainstalowanej najpierw kryptografii. Jestem na Win764-bit z zainstalowanym 64-bitowym Python 2.7. Odpowiedź @ jsonm ostatecznie dla mnie zadziałała, ale najpierw musiałem skopiować C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvarsx86_amd64.batdo x86_amd64podkatalogu w tym katalogu bin, aby vcvarsall.batprzestał zgłaszać błąd informujący o braku konfiguracji. Jeśli musisz skonfigurować zmienne env dla innej konfiguracji, skopiuj do odpowiedniego pliku bat vcvars do odpowiedniego podkatalogu, w przeciwnym razie pierwsze polecenie może nie działać.

Następnie uruchomiłem następujące polecenie z wiersza poleceń zgodnie z instrukcjami @ jsonm (poprawione dla mojej konfiguracji) ...

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

I zadziałało.



1

Pobrałem pełny kod źródłowy Paramiko z Pypi i zrobiłem

Python setup.py install

działało bezbłędnie

wszystkie domyślne pakiety pythondev / openssl / libffi są już obecne w rhel.

pobieranie RPM ma niedopasowanie RPM i więcej problemów


0

Mam ten sam problem:

pip install cryptography

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

Następnie instaluję libffi-devel i problem został rozwiązany

yum install libffi-devel


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.