Gagal menginstal paket Python Cryptography dengan PIP dan setup.py


256

Ketika saya mencoba menginstal paket Kriptografi untuk Python melalui pip install cryptographyatau dengan mengunduh paket dari situs mereka dan menjalankannya python setup.py, saya mendapatkan kesalahan berikut:


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

Saya menemukan posting kesalahan egg_info lainnya (di sini dan di sini ) tetapi solusi yang disediakan tidak akan menyelesaikan masalah saya. Saya juga dapat menginstal paket lain melalui PIP.

PIP versi 1.5.4 setuptools versi 2.2


POINTER FOR EVERYONE - cryptography sekarang mengirimkan roda prebuild untuk sebagian besar OS, jadi ` pip installcryptography` seharusnya bekerja di luar kotak.
Legorooj

Jawaban:


427

Saya memiliki masalah yang sama, dan menemukan saya hanya kehilangan ketergantungan (libssl-dev, untuk saya). Sebagaimana dirujuk dalam https://cryptography.io/en/latest/installation/ , pastikan semua dependensi terpenuhi:

Di Windows

Jika Anda menggunakan Windows, Anda harus memastikan bahwa Anda telah menginstal OpenSSL. Ada binari yang telah dikompilasi sebelumnya. Jika instalasi Anda di lokasi yang tidak biasa atur variabel lingkungan LIB dan TERMASUK untuk memasukkan lokasi yang sesuai. Sebagai contoh:

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

Membangun kriptografi di Linux

kriptografi harus dibangun dengan sangat mudah di Linux asalkan Anda memiliki kompiler C, tajuk untuk Python (jika Anda tidak menggunakan pypy), dan tajuk untuk pustaka OpenSSL dan libffi yang tersedia di sistem Anda.

Untuk Debian dan Ubuntu , perintah berikut akan memastikan bahwa dependensi yang diperlukan diinstal:

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

Untuk Fedora dan derivatif RHEL , perintah berikut akan memastikan bahwa dependensi yang diperlukan diinstal:

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

Anda sekarang seharusnya dapat membangun dan menginstal kriptografi dengan yang biasa.

pip install cryptography

1
Terima kasih, bekerja dengan sempurna! Memiliki VS2010 saya harus: SET VS90COMNTOOLS =% VS100COMNTOOLS% dan tambahkan akhiran "mt" ke nama lib
Maciek

//, saya dapat mengkonfirmasi bahwa ini bekerja pada mesin CEntOS 6.3 dengan Python 3.3 dengan kesalahan yang sama dengan yang diposting pada pertanyaan awal.
Nathan Basanese

4
Sepertinya libffi-devpaket itu kuncinya sama sekali. Saya tidak perlu mengkonfigurasi apa pun lagi, tetapi nama paket itu tidak muncul di log kesalahan: - / Terima kasih.
m3nda

6
Jangan lupa ganti python-devdengan python3-devjika Anda menggunakan python3
duan

1
FWIW Saya menjalankan Debian 9 dan harus melakukan instalasi apt-get libssl1.0-dev sebelum saya berhenti mendapatkan kesalahan selama pip install cryptography
Mike Pennington

113

Ini adalah versi ringkas informasi yang ditemukan pada halaman dokumentasi instalasi kriptografi . Lihat halaman itu untuk perincian terbaru.

Karena pertanyaan SO ini terus muncul, saya akan memberikan respons di sini juga (saya adalah salah satu pengembang pyca / kriptografi). Inilah yang Anda perlukan untuk menginstal pyca / cryptography dengan andal di 3 platform utama.

Harap dicatat dalam semua kasus ini, sangat disarankan agar Anda menginstal ke virtualenv dan tidak ke dalam ruang paket global. Ini bukan khusus untuk kriptografi, tetapi lebih merupakan saran umum untuk menjaga agar instalasi Python Anda dapat diandalkan. Ruang paket global dalam OS yang disediakan Python dimiliki oleh sistem dan menginstal hal-hal melalui pip ke dalamnya meminta masalah.

Windows

Tingkatkan ke pip terbaru (8.1.2 pada Juni 2016) dan adil pip install cryptography

kriptografi dan cffi keduanya dikirim sebagai roda yang terhubung secara statis.

OS X

Tingkatkan ke pip terbaru (8.1.2 pada Juni 2016) dan adil pip install cryptography

kriptografi dan cffi keduanya dikirim sebagai roda yang terhubung secara statis. Ini akan berfungsi untuk pyenv Python, sistem Python, homebrew Python, dll. Selama Anda menggunakan pip terbaru, Anda bahkan tidak memerlukan kompiler.

Linux

Pada versi 2.0, kriptografi mengirimkan roda manylinux1. Ini berarti pengguna dengan pip 8.1+ berjalan pada distribusi berbasis glibc (hampir semuanya kecuali Alpine Linux) dan pada x86 / x86-64 (maaf orang Raspberry Pi) tidak lagi memerlukan kompiler atau header karena Anda akan mendapatkan roda yang dikompilasi secara otomatis . Jadi, hal pertama yang harus Anda coba adalah meningkatkan pip Anda!

Jika Anda tidak kompatibel dengan banyaklinux1 maka inilah yang perlu Anda lakukan:

Anda memerlukan kompiler C, libffi + header pengembangannya, dan openssl + header pengembangannya.

Distribusi turunan Debian atau Ubuntu

apt-get install build-essential libssl-dev libffi-dev python-dev diikuti oleh

pip install cryptography

Distribusi Red Hat

yum install gcc openssl-devel libffi-devel python-devel diikuti oleh

pip install cryptography


1
Saya sudah melakukan ini, tetapi saya masih mendapatkan kesalahan ini: "Gagal membuat roda untuk kriptografi" Diikuti oleh banyak output (terlalu banyak untuk komentar).
RolandiXor

4
Respons MacOSX bekerja seperti pesona di MacOS Sierra 10.12. Saya telah memutakhirkan pip saya ke versi terbaru saat ini, 9.0.1.
João Santos

3
Tingkatkan ke pip terbaru (8.1.2 pada Juni 2016) dan cukup pip instal karya kriptografi!
Timothy Dalton

Saya harus secara manual memperbarui pipyang sudah lama, maka solusi OSX bekerja seperti pesona. ( pip 9.0.1, MacOS Sierra)
benjaminz

1
tidak berfungsi di windows10 saya, kesalahan build tidak dapat membuka termasuk file: 'openssl / opensslv.h'
Totte Karlsson

43

Bagi Anda yang menjalankan OS X, inilah yang bekerja untuk saya:

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

(Menjalankan 10.9 Mavericks)

Anda mungkin juga ingin mencoba menggabungkan flag dan perintah pip ke yang berikut sesuai komentar di bawah ini:

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 dari reaperhulk bekerja untuk saya di Mavericks.
jjr4826

Perintah ini dalam jawabannya tidak benar: baris kedua dan ketiga harus digabung (gunakan backslash). Kemudian bekerja dengan sempurna, baru diuji pada El Capitan. Komentar di atas juga tidak benar. Pengaturan lain dalam jawaban diperlukan, atau Anda akan mendapatkan keluhan nanti.
Christian Tismer

1
Seperti biasa @nathancahill HEHE
Nick Woodhams

1
Saya harus menggunakan exporttidak env, tetapi jika tidak berfungsi.
Richard

$ ARCHFLAGS="-arch x86_64" LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographybekerja untuk saya macOS 10.12dengan Python3.7(dalam virtualenv) ketika perlu cryptographyuntuk menginstal ansible.
jalanb

23

Ini bekerja untuk saya di El Capitan

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

Anda juga dapat memeriksa utas di sini: https://github.com/pyca/cryptography/issues/2350


Ini adalah yang pertama di halaman ini (dan banyak, banyak lainnya ..) yang bekerja untuk saya di Mojave 10.14.5, terima kasih. Juga seperti itu, variabel lingkungan hanya aktif untuk perintah daripada sesi seperti di tempat lain.
Chris

23

Ini memecahkan masalah bagi saya (Ubuntu 16.04):

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

dan kemudian berfungsi seperti ini:

pip install cryptography
pip install pyopenssl ndg-httpsclient pyasn1

14

Rupanya pada versi OSX terbaru ini mungkin disebabkan oleh Apple mengirimkan versi OpenSSL mereka sendiri, yang tidak berfungsi dengan pustaka kriptografi.

Versi terbaru dari pustaka kriptografi dikirimkan dengan dependensi asli mereka sendiri, tetapi untuk mendapatkannya, Anda harus memutakhirkan pip, dan mungkin juga env virtual. Jadi bagi saya, solusinya adalah:

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

instal ulang virtualenv melakukannya untuk saya, itu menggunakan versi lama dari pip yang terus gagal, terima kasih!
Adri Van Houdt

Masih gagal untuk saya. OSX 10.11.3 El Capitan di sini.
agondiken

14

Bagaimana saya memecahkan "Dir build gagal gagal untuk kriptografi"
(Saya datang ke sini dari google untuk mencari kesalahan ini.)

catatan : menggunakan virtualenv

TL; DR:

file saya /etc/apt/sources.listtidak dikonfigurasi dengan benar untuk debian 8 saya.

Penjelasan:

Saya ingin menginstal paramiko. paramiko membutuhkan kriptografi.

Saya mendapat kesalahan ini: pertama dengan 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/

dan kemudian dengan 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.

(Tidak persis kesalahan yang sama dengan OP tapi saya di sini untuk membantu akhirnya )

Memecahkan:

Setelah menguji hampir setiap perintah dari setiap posting saya akhirnya pergi di
https://wiki.debian.org/SourcesList
dan menyalin disisipkan konfigurasi yang memadai saya di file/etc/apt/sources.list

kemudian:

sudo aptitude update

lalu

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

lalu

pip install cryptography

hth


Memecahkan masalah saya di server ubuntu 16.04. Terima kasih
Altaf Hussain

14

Saya mencoba banyak solusi di atas, tetapi hanya setelah instalasi lib berikut saya dapat menginstal cryptography:

sudo apt install libssl1.0

Saya menggunakan Ubuntu 18.04, tetapi akan bekerja pada Ubuntu 18.10 juga.


1
Sementara kode ini dapat menjawab pertanyaan, memberikan konteks tambahan tentang bagaimana dan / atau mengapa memecahkan masalah akan meningkatkan nilai jangka panjang jawaban.
Nic3500

1
Ini berhasil untuk saya. Mengapa ini berhasil? Apa perbedaan antara paket itu, yang menginstal libssl1.0-dev dan libssl-dev?
Chris

2
Saya tidak mengerti mengapa, tetapi hanya ini yang membantu saya juga
dyus

Bekerja untuk saya juga. Meskipun pip masih mendapatkan kesalahan segmentasi setelah mengumumkan pemasangan yang berhasil, tapi saya pikir itu hanya masalah pip.
Rob Mosher


7

Jawaban Nick Woodham tidak bekerja pada OSX 10.11 untuk saya, tetapi ini berhasil.

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

Ini paling dekat dengan bekerja untuk saya tetapi juga gagal .. El Capitan OSX 10.11.3 di sini. gagal dengan kode kesalahan 1 di / private / var / folder / d9 / 75cfznt17cjc124j3stq3qc40000gn / T / pip-build-Q_JjdE / cryptography /
agondiken

Saya harus menggunakan CFLAGS="-I/usr/local/opt/openssl/include" pip install cryptographydan menginstalnya. Saya harus menambahkan LDFLAGS="-L/usr/local/opt/openssl/lib"juga untuk mendapatkan perpustakaan untuk memuat. Komentar Dekan Christian Armada tampaknya melakukan hal yang sama tetapi menggunakan variabel yang dihasilkan bukan alih-alih pengkodean.
spig

4

Jika Anda menggunakan python3, Anda harus menginstal python3-dev. Ini memperbaiki masalah saya sudo apt-get install python3-dev.


4

Saya mengalami masalah dengan pemasangan cryptography==1.7.1di Ubuntu 16.04 dan tidak ada jawaban di atas yang membantu. Jadi, saya memutakhirkan persyaratan ke 1.8.2 yang kompatibel dan pengaturannya berhasil. Perhatikan bahwa Anda masih perlu membangun esensi & dependensi lain yang disebutkan dalam jawaban teratas (paling banyak dipilih) .


3

Saya mengalami masalah saat menjalankan sudo pip install cryptographykarena tidak menemukan ffi ketika mencoba mengompilasi. (OSX - Yosemite)

Saya menyelesaikannya dengan mengunduh libffi dan mengatur env var.

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

Saya mengalami masalah menginstal pip bcrypt karena cffi gagal menginstal, tetapi ini memperbaikinya untuk cffi dan bcrypt. Terima kasih!
radiantradon

Ini tidak berhasil untuk saya di El Capitan. Perhatikan juga periode nyasar di akhir "pip install cryptography."
shacker

@ shacker Tidak punya el capitan jadi tidak bisa mengujinya tapi menghapus periode nyasar terima kasih.
ThinkBonobo

@shacker Periksa jawaban saya bro untuk instalasi El Capitan
Dean Christian Armada

3

Ini berfungsi pada El Capitan dengan MacPorts:

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

3

Jika Anda sedang membangun sebuah distribusi paket python di .gitlab-ci.yml file dalam untuk GitLab CI yang menggunakan pelari gitlab dikerahkan di mesin AWS EC2

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

1
Cheers, bekerja dengan sangat baik dalam sebuah wadah buruh pelabuhan berbasis alpine!
Alex Szabó

2

Saya perhatikan poster asli jelas menggunakan instalasi windows ... dan jawaban terbaik di atas semua untuk OS lain ... jadi begini. Ini mengasumsikan Anda telah menginstal Python 2.7 yang merupakan versi yang paling banyak didukung (meskipun lama).

  1. Instal " Visual C ++ Compiler untuk Python "
  2. Buka jendela prompt perintah Administratif
  3. Jalankan kembali instalasi pip (paket) mis

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

2

Saya mengalami masalah serupa baru-baru ini. Dalam kasus saya, versi cffidan yang cryptographyditulis di requirement.txt tidak kompatibel (cffi == 1.8.9 dan kriptografi == 1.9). Saya memecahkan pembaruan cffidengan versi terakhir yang tersedia.


1

Saya benar-benar berlari ke prob yang sama ini mencoba menginstal Scrapy yang tergantung pada kriptografi yang diinstal terlebih dahulu. Saya menggunakan Win764-bit dengan Python 2.7 64-bit diinstal. Jawaban @ jsonm akhirnya bekerja untuk saya, tetapi pertama-tama saya harus menyalin C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvarsx86_amd64.batke x86_amd64subdir dalam direktori bin jadivcvarsall.bat akan berhenti melempar kesalahan mengatakan itu hilang konfigurasi. Jika Anda perlu mengkonfigurasi env vars untuk pengaturan yang berbeda, pastikan untuk menyalin ke file vcvars bat yang sesuai ke subdir yang sesuai atau perintah pertama di bawah ini mungkin tidak berfungsi.

Kemudian saya menjalankan berikut ini dari commandline sesuai instruksi @ jsonm (tweak untuk konfigurasi saya) ...

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

Dan itu berhasil.



1

saya mengunduh paramiko kode sumber lengkap dari pypi dan melakukannya

instal setup.py python

itu bekerja dengan sempurna

semua paket pythondev / openssl / libffi default sudah ada di rhel.

mengunduh rpms memiliki ketidakcocokan rpm dan lebih banyak masalah


0

Saya mengalami masalah yang sama:

pip install cryptography

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

Kemudian saya menginstal libffi-devel dan masalah terpecahkan

yum install libffi-devel


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.