Search code examples
pythonpipcygwin

Can't install python cryptography on Cygwin


I have installed python38-cryptogrpahy package v.3.3.2-1 thru cygwin but when I try to install fabric via pip - it tries to build it and fails with next error:

$ pip install -r ./requirements.txt
Collecting fabric3
  Using cached Fabric3-1.14.post1-py3-none-any.whl (92 kB)
Collecting paramiko<3.0,>=2.0
  Using cached paramiko-2.8.1-py2.py3-none-any.whl (206 kB)
Requirement already satisfied: six>=1.10.0 in ./env/lib/python3.8/site-packages (from fabric3->-r ./requirements.txt (line 1)) (1.16.0)
Collecting pynacl>=1.0.1
  Using cached PyNaCl-1.4.0-cp38-cp38-cygwin_3_3_3_x86_64.whl
Collecting bcrypt>=3.1.3
  Using cached bcrypt-3.2.0-cp38-cp38-cygwin_3_3_3_x86_64.whl
Collecting cryptography>=2.5
  Using cached cryptography-36.0.1.tar.gz (572 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting cffi>=1.1
  Using cached cffi-1.15.0-cp38-cp38-cygwin_3_3_3_x86_64.whl
Requirement already satisfied: pycparser in ./env/lib/python3.8/site-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko<3.0,>=2.0->fabric3->-r ./requirements.txt (line 1)) (2.21)
Building wheels for collected packages: cryptography
  Building wheel for cryptography (pyproject.toml) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/dnester/repo/vastuf_server_common/containers/smart_home/rvalarm/env/bin/python /home/dnester/repo/vastuf_server_common/containers/smart_home/rvalarm/env/lib/python3.8/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmpojt6ejpa
       cwd: /tmp/pip-install-cxk1g2b2/cryptography_9e2405fed34048fcbe4e2c9e871e31b6
  Complete output (168 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.cygwin-3.3.3-x86_64-3.8
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
  copying src/cryptography/exceptions.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
  copying src/cryptography/fernet.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
  copying src/cryptography/utils.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
  copying src/cryptography/__about__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
  copying src/cryptography/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat
  copying src/cryptography/hazmat/_oid.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat
  copying src/cryptography/hazmat/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
  copying src/cryptography/x509/base.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
  copying src/cryptography/x509/certificate_transparency.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
  copying src/cryptography/x509/extensions.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
  copying src/cryptography/x509/general_name.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
  copying src/cryptography/x509/name.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
  copying src/cryptography/x509/ocsp.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
  copying src/cryptography/x509/oid.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
  copying src/cryptography/x509/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends
  copying src/cryptography/hazmat/backends/interfaces.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends
  copying src/cryptography/hazmat/backends/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings
  copying src/cryptography/hazmat/bindings/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/cmac.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/constant_time.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/hashes.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/hmac.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/keywrap.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/padding.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/poly1305.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/_asymmetric.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/_cipheralgorithm.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/_serialization.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/aead.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/backend.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/ciphers.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/cmac.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/decode_asn1.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/dh.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/dsa.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/ec.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/ed25519.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/ed448.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/encode_asn1.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/hashes.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/hmac.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/poly1305.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/rsa.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/utils.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/x25519.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/x448.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/x509.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/openssl
  copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/openssl
  copying src/cryptography/hazmat/bindings/openssl/_conditional.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/openssl
  copying src/cryptography/hazmat/bindings/openssl/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/openssl
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/dh.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/dsa.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/ec.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/ed25519.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/ed448.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/padding.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/rsa.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/types.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/utils.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/x25519.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/x448.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
  copying src/cryptography/hazmat/primitives/ciphers/aead.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
  copying src/cryptography/hazmat/primitives/ciphers/algorithms.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
  copying src/cryptography/hazmat/primitives/ciphers/base.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
  copying src/cryptography/hazmat/primitives/ciphers/modes.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
  copying src/cryptography/hazmat/primitives/ciphers/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/concatkdf.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/hkdf.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/kbkdf.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/scrypt.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/x963kdf.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
  copying src/cryptography/hazmat/primitives/serialization/base.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
  copying src/cryptography/hazmat/primitives/serialization/pkcs12.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
  copying src/cryptography/hazmat/primitives/serialization/pkcs7.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
  copying src/cryptography/hazmat/primitives/serialization/ssh.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
  copying src/cryptography/hazmat/primitives/serialization/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/twofactor
  copying src/cryptography/hazmat/primitives/twofactor/hotp.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/twofactor
  copying src/cryptography/hazmat/primitives/twofactor/totp.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/twofactor
  copying src/cryptography/hazmat/primitives/twofactor/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/twofactor
  running egg_info
  writing src/cryptography.egg-info/PKG-INFO
  writing dependency_links to src/cryptography.egg-info/dependency_links.txt
  writing requirements to src/cryptography.egg-info/requires.txt
  writing top-level names to src/cryptography.egg-info/top_level.txt
  reading manifest file 'src/cryptography.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  no previously-included directories found matching 'docs/_build'
  warning: no previously-included files found matching 'vectors'
  warning: no previously-included files matching '*' found under directory 'vectors'
  warning: no previously-included files matching '*' found under directory '.github'
  warning: no previously-included files found matching 'release.py'
  warning: no previously-included files found matching '.coveragerc'
  warning: no previously-included files found matching 'codecov.yml'
  warning: no previously-included files found matching '.readthedocs.yml'
  warning: no previously-included files found matching 'dev-requirements.txt'
  warning: no previously-included files found matching 'tox.ini'
  warning: no previously-included files found matching 'mypy.ini'
  warning: no previously-included files matching '*' found under directory '.zuul.d'
  warning: no previously-included files matching '*' found under directory '.zuul.playbooks'
  adding license file 'LICENSE'
  adding license file 'LICENSE.APACHE'
  adding license file 'LICENSE.BSD'
  adding license file 'LICENSE.PSF'
  writing manifest file 'src/cryptography.egg-info/SOURCES.txt'
  copying src/cryptography/py.typed -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
  creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/__init__.pyi -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/asn1.pyi -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/ocsp.pyi -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/x509.pyi -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/_rust
  running build_ext
  running build_rust

      =============================DEBUG ASSISTANCE=============================
      If you are seeing a compilation error please try the following steps to
      successfully install cryptography:
      1) Upgrade to the latest pip and try again. This will fix errors for most
         users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
      2) Read https://cryptography.io/en/latest/installation/ for specific
         instructions for your platform.
      3) Check our frequently asked questions for more information:
         https://cryptography.io/en/latest/faq/
      4) Ensure you have a recent Rust toolchain installed:
         https://cryptography.io/en/latest/installation/#rust

      Python: 3.8.12
      platform: CYGWIN_NT-10.0-22000-3.3.3-341.x86_64-x86_64-64bit-WindowsPE
      pip: n/a
      setuptools: 59.7.0
      setuptools_rust: 1.1.2
      =============================DEBUG ASSISTANCE=============================

  error: can't find Rust compiler

  If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.

  To update pip, run:

      pip install --upgrade pip

  and then retry package installation.

  If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.

  This package requires Rust >=1.41.0.
  ----------------------------------------
  ERROR: Failed building wheel for cryptography
Failed to build cryptography
ERROR: Could not build wheels for cryptography, which is required to install pyproject.toml-based projects

I didn't find Rust compiler in Cygwin packages and don't want to build it from sources. So I want to figure out why installed cryptography package is not recognized by pip.


Solution

  • 3.3.2 is the last cryptography version that does not require rust. So the last possible and available on Cygwin that has no rust compiler.

    As it seems that pip is trying to install the latest upstream release of cryptography, forcing the cryptography==3.3.2 on the requirement should work.