pyca / cryptography

cryptography is a package designed to expose cryptographic primitives and recipes to Python developers.
https://cryptography.io
Other
6.65k stars 1.53k forks source link

Installling Problem with pip #8971

Closed Rentek8 closed 1 year ago

Rentek8 commented 1 year ago

Hey Labgrid Team,

I'm working at a company and we want to install cryptography, because we want to integrate labgrid into our Testing Environment. I tried in march to install it and had some issues with the installing part. We are using docker container and the python versions and everything else should be the same. I put some infos here, maybe some other have the same problems. The python versions can't be the newest available.

grafik

image

image

image

image In the last picture the installing doesn't end. It's stuck. i need to cancel it. One time i waited 30 min in my pause.

How do you test your current versions on ubuntu systems?

Info System:

Greetings Niklas Kettner

alex commented 1 year ago

We are not the labgrid team.

You've included several different screenshots of your failures, so it's hard to know which is which.

That said, the easiest resolutions is to install a version that's available on PiWheels: https://piwheels.org/project/cryptography/

This will get you a pre-built wheel.

Rentek8 commented 1 year ago

The first and last picture is from the failure. The first one is from the labgrid installation, which install cryptography with piwhell. The second picture is just the command "pip install cryptography".

The piwheels installation from your link doesn't work. I tried different install methods like they described in their FAQ. Then this issue occurs.

pi@ldetoolboxsrv15-eth:~ $ sudo pip3 install cryptography
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting cryptography
  Downloading cryptography-40.0.2.tar.gz (625 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 625.6/625.6 KB 3.1 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting cffi>=1.12
  Using cached https://www.piwheels.org/simple/cffi/cffi-1.15.1-cp39-cp39-linux_armv7l.whl (364 kB)
Collecting pycparser
  Using cached https://www.piwheels.org/simple/pycparser/pycparser-2.21-py2.py3-none-any.whl (119 kB)
Building wheels for collected packages: cryptography
  Building wheel for cryptography (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for cryptography (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [247 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-armv7l-cpython-39
      creating build/lib.linux-armv7l-cpython-39/cryptography
      copying src/cryptography/__about__.py -> build/lib.linux-armv7l-cpython-39/cryptography
      copying src/cryptography/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography
      copying src/cryptography/exceptions.py -> build/lib.linux-armv7l-cpython-39/cryptography
      copying src/cryptography/utils.py -> build/lib.linux-armv7l-cpython-39/cryptography
      copying src/cryptography/fernet.py -> build/lib.linux-armv7l-cpython-39/cryptography
      creating build/lib.linux-armv7l-cpython-39/cryptography/x509
      copying src/cryptography/x509/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/x509
      copying src/cryptography/x509/certificate_transparency.py -> build/lib.linux-armv7l-cpython-39/cryptography/x509
      copying src/cryptography/x509/general_name.py -> build/lib.linux-armv7l-cpython-39/cryptography/x509
      copying src/cryptography/x509/name.py -> build/lib.linux-armv7l-cpython-39/cryptography/x509
      copying src/cryptography/x509/extensions.py -> build/lib.linux-armv7l-cpython-39/cryptography/x509
      copying src/cryptography/x509/ocsp.py -> build/lib.linux-armv7l-cpython-39/cryptography/x509
      copying src/cryptography/x509/oid.py -> build/lib.linux-armv7l-cpython-39/cryptography/x509
      copying src/cryptography/x509/base.py -> build/lib.linux-armv7l-cpython-39/cryptography/x509
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat
      copying src/cryptography/hazmat/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat
      copying src/cryptography/hazmat/_oid.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends
      copying src/cryptography/hazmat/backends/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings
      copying src/cryptography/hazmat/bindings/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/_cipheralgorithm.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/hmac.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/keywrap.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/poly1305.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/cmac.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/padding.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/constant_time.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/hashes.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/_serialization.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/_asymmetric.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/dsa.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/aead.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/hmac.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/poly1305.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/ec.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/ciphers.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/cmac.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/utils.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/rsa.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/ed25519.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/x448.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/ed448.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/hashes.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/dh.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/backend.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/decode_asn1.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/backends/openssl
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/openssl
      copying src/cryptography/hazmat/bindings/openssl/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/openssl
      copying src/cryptography/hazmat/bindings/openssl/_conditional.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/openssl
      copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/openssl
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/twofactor
      copying src/cryptography/hazmat/primitives/twofactor/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/twofactor
      copying src/cryptography/hazmat/primitives/twofactor/totp.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/twofactor
      copying src/cryptography/hazmat/primitives/twofactor/hotp.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/twofactor
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/ciphers
      copying src/cryptography/hazmat/primitives/ciphers/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/ciphers
      copying src/cryptography/hazmat/primitives/ciphers/aead.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/ciphers
      copying src/cryptography/hazmat/primitives/ciphers/algorithms.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/ciphers
      copying src/cryptography/hazmat/primitives/ciphers/modes.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/ciphers
      copying src/cryptography/hazmat/primitives/ciphers/base.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/ciphers
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/hkdf.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/kbkdf.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/scrypt.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/concatkdf.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/x963kdf.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/kdf
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/serialization
      copying src/cryptography/hazmat/primitives/serialization/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/serialization
      copying src/cryptography/hazmat/primitives/serialization/pkcs12.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/serialization
      copying src/cryptography/hazmat/primitives/serialization/pkcs7.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/serialization
      copying src/cryptography/hazmat/primitives/serialization/ssh.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/serialization
      copying src/cryptography/hazmat/primitives/serialization/base.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/serialization
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/__init__.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/dsa.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/types.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/x25519.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/ec.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/padding.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/utils.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/rsa.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/ed25519.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/x448.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/ed448.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/dh.py -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/primitives/asymmetric
      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 '.readthedocs.yml'
      warning: no previously-included files found matching 'ci-constraints-requirements.txt'
      warning: no previously-included files found matching 'mypy.ini'
      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'
      /tmp/pip-build-env-vt30tw_x/overlay/lib/python3.9/site-packages/setuptools/command/build_py.py:201: _Warning: Package 'cryptography.hazmat.bindings._rust' is absent from the `packages` configuration.
      !!

              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'cryptography.hazmat.bindings._rust' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.

              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'cryptography.hazmat.bindings._rust' is explicitly added
              to the `packages` configuration field.

              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).

              You can read more about "package discovery" on setuptools documentation page:

              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

              If you don't want 'cryptography.hazmat.bindings._rust' to be distributed and are
              already explicitly excluding 'cryptography.hazmat.bindings._rust' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.

              You can read more about "package data files" on setuptools documentation page:

              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html

              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************

      !!
        check.warn(importable)
      /tmp/pip-build-env-vt30tw_x/overlay/lib/python3.9/site-packages/setuptools/command/build_py.py:201: _Warning: Package 'cryptography.hazmat.bindings._rust.openssl' is absent from the `packages` configuration.
      !!

              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'cryptography.hazmat.bindings._rust.openssl' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.

              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'cryptography.hazmat.bindings._rust.openssl' is explicitly added
              to the `packages` configuration field.

              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).

              You can read more about "package discovery" on setuptools documentation page:

              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

              If you don't want 'cryptography.hazmat.bindings._rust.openssl' to be distributed and are
              already explicitly excluding 'cryptography.hazmat.bindings._rust.openssl' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.

              You can read more about "package data files" on setuptools documentation page:

              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html

              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************

      !!
        check.warn(importable)
      copying src/cryptography/py.typed -> build/lib.linux-armv7l-cpython-39/cryptography
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/_rust
      copying src/cryptography/hazmat/bindings/_rust/__init__.pyi -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/_rust
      copying src/cryptography/hazmat/bindings/_rust/_openssl.pyi -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/_rust
      copying src/cryptography/hazmat/bindings/_rust/asn1.pyi -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/_rust
      copying src/cryptography/hazmat/bindings/_rust/ocsp.pyi -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/_rust
      copying src/cryptography/hazmat/bindings/_rust/pkcs7.pyi -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/_rust
      copying src/cryptography/hazmat/bindings/_rust/x509.pyi -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/_rust
      creating build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/_rust/openssl
      copying src/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/_rust/openssl
      copying src/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi -> build/lib.linux-armv7l-cpython-39/cryptography/hazmat/bindings/_rust/openssl
      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.9.13
          platform: Linux-5.10.103-v7+-armv7l-with-glibc2.28
          pip: n/a
          setuptools: 67.8.0
          setuptools_rust: 1.6.0
          rustc: n/a
          =============================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.48.0.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  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
WARNING: You are using pip version 22.0.4; however, version 23.1.2 is available.
You should consider upgrading via the '/usr/bin/python3 -m pip install --upgrade pip' command.
pi@ldetoolboxsrv15-eth:~ $ pip --version
pip 23.1.2 from /home/pi/.local/lib/python3.9/site-packages/pip (python 3.9)

`

alex commented 1 year ago

As can be seen clearly in that output, you are downloading cryptography 40.0.2, which is not available from piwheels, and therefore you are downloading an sdist and building it.

Rentek8 commented 1 year ago

Yeah, thanks. I installed an older version and it works for now.