Error during upgrade

Attempting to upgrade console from 22.12.3 to 23.3.1 and receive errors. Running on Windows 10 with VMWare workstation, Pi desktop.
Log is :
############################
# 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)
  copying src/cryptography/py.typed -> build/lib.linux-x86_64-cpython-39/cryptography
  copying src/cryptography/hazmat/bindings/_openssl.pyi -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings
  creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/__init__.pyi -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/asn1.pyi -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/ocsp.pyi -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/pkcs7.pyi -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/x509.pyi -> build/lib.linux-x86_64-cpython-39/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.9.2
      platform: Linux-5.10.0-15-amd64-x86_64-with-glibc2.31
      pip: n/a
      setuptools: 68.0.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

Had a similar error when I last updated.
Thanks for any suggestions.

This is a known python version thing. I’ve seen it a bunch of times. You could install a rust compiler in your VM and wait a ‘long’ time for it to compile stuff under the hood, or you can update your python modules and os to current before trying the app upgrade.

What os are you running in your VM ?

I can’t recall where I saw this last, but a quick google search found this one that has a fix at the bottom that looks familiar…Termux Compilation error Cryptography - #2 by optimismus - Installation - Home Assistant Community

When I originally setup the VMWare it asked which OS and I selected Debian 10.x. Since that time it was upgraded to version 11. I checked for upgrades but nothing came up. I’ll look at the link you sent.
Last time I had a problem, Pete Davis changed the install script and it worked.

Thanks

The issue in my hazy recollection is the way the os guys have compiled the python modules, but I think the link I posted shows what to install so the piconsole should work. If I get a chance I’ll see if I can find where I reported the same issue elsewhere a while ago.

Basically if you google for " Python recognizes ‘cryptography.hazmat.bindings._rust’ as an importable package[^1],
but it is absent from setuptools’ packages configuration" you’ll get pointed in the right direction…

See if " sudo apt install python3-cryptography" helps you any…

That might not be possible this time. The problem is that the install/update script ties the Cryptography module to a specific version that is compatible with a Pi3 and Pi4. Can you share the preamble printed to the terminal when you start the update. This will tell me how the script is viewing your hardware

Thanks for the responses. Below is more of the log:

[✓] Root user check passed
  [✓] Architecture check passed (x86_64)
  [✓] OS check passed (Debian GNU/Linux 11 (bullseye))

  ============================== 
  Updating WeatherFlow PiConsole 
  ============================== 

  [✓] Checking for updated packages
  [i] No updated packages found

  [i] WeatherFlow PiConsole dependency checks...
  [✓] Checking for git
  [✓] Checking for curl
  [✓] Checking for rng-tools
  [✓] Checking for build-essential
  [✓] Checking for python3-dev
  [✓] Checking for python3-pip
  [✓] Checking for python3-setuptools
  [✓] Checking for libssl-dev
  [✓] Checking for libffi-dev
  [✓] Checking for libatlas-base-dev
  [✓] Checking for jq

  [i] Updating WeatherFlow PiConsole Python modules...
  [✓] Updating Python package manager
  [✗] Updating Python module
  Error: Unable to update Python module: cryptography
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting cryptography==39.0.0
  Using cached cryptography-39.0.0.tar.gz (603 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting cffi>=1.12 (from cryptography==39.0.0)
  Using cached cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (420 kB)
Collecting pycparser (from cffi>=1.12->cryptography==39.0.0)
  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): started
  Building wheel for cryptography (pyproject.toml): finished with status 'error'
  error: subprocess-exited-with-error
  
  × Building wheel for cryptography (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [206 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-39
      creating build/lib.linux-x86_64-cpython-39/cryptography
      copying src/cryptography/utils.py -> build/lib.linux-x86_64-cpython-39/cryptography
      copying src/cryptography/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography
      copying src/cryptography/exceptions.py -> build/lib.linux-x86_64-cpython-39/cryptography
      copying src/cryptography/__about__.py -> build/lib.linux-x86_64-cpython-39/cryptography
      copying src/cryptography/fernet.py -> build/lib.linux-x86_64-cpython-39/cryptography
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat
      copying src/cryptography/hazmat/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat
      copying src/cryptography/hazmat/_oid.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat
      creating build/lib.linux-x86_64-cpython-39/cryptography/x509
      copying src/cryptography/x509/name.py -> build/lib.linux-x86_64-cpython-39/cryptography/x509
      copying src/cryptography/x509/certificate_transparency.py -> build/lib.linux-x86_64-cpython-39/cryptography/x509
      copying src/cryptography/x509/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/x509
      copying src/cryptography/x509/oid.py -> build/lib.linux-x86_64-cpython-39/cryptography/x509
      copying src/cryptography/x509/base.py -> build/lib.linux-x86_64-cpython-39/cryptography/x509
      copying src/cryptography/x509/ocsp.py -> build/lib.linux-x86_64-cpython-39/cryptography/x509
      copying src/cryptography/x509/general_name.py -> build/lib.linux-x86_64-cpython-39/cryptography/x509
      copying src/cryptography/x509/extensions.py -> build/lib.linux-x86_64-cpython-39/cryptography/x509
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/_asymmetric.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/_cipheralgorithm.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/_serialization.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/constant_time.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/hmac.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/poly1305.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/cmac.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/padding.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/hashes.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      copying src/cryptography/hazmat/primitives/keywrap.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings
      copying src/cryptography/hazmat/bindings/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends
      copying src/cryptography/hazmat/backends/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/x963kdf.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/concatkdf.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/kbkdf.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/scrypt.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/kdf
      copying src/cryptography/hazmat/primitives/kdf/hkdf.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/kdf
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/serialization
      copying src/cryptography/hazmat/primitives/serialization/pkcs7.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/serialization
      copying src/cryptography/hazmat/primitives/serialization/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/serialization
      copying src/cryptography/hazmat/primitives/serialization/base.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/serialization
      copying src/cryptography/hazmat/primitives/serialization/ssh.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/serialization
      copying src/cryptography/hazmat/primitives/serialization/pkcs12.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/serialization
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/twofactor
      copying src/cryptography/hazmat/primitives/twofactor/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/twofactor
      copying src/cryptography/hazmat/primitives/twofactor/hotp.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/twofactor
      copying src/cryptography/hazmat/primitives/twofactor/totp.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/twofactor
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/ciphers
      copying src/cryptography/hazmat/primitives/ciphers/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/ciphers
      copying src/cryptography/hazmat/primitives/ciphers/aead.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/ciphers
      copying src/cryptography/hazmat/primitives/ciphers/modes.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/ciphers
      copying src/cryptography/hazmat/primitives/ciphers/base.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/ciphers
      copying src/cryptography/hazmat/primitives/ciphers/algorithms.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/ciphers
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/utils.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/ed448.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/ec.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/x448.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/dh.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/types.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/rsa.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/x25519.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/ed25519.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/padding.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      copying src/cryptography/hazmat/primitives/asymmetric/dsa.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/primitives/asymmetric
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings/openssl
      copying src/cryptography/hazmat/bindings/openssl/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings/openssl
      copying src/cryptography/hazmat/bindings/openssl/_conditional.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings/openssl
      copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/bindings/openssl
      creating build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/utils.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/ed448.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/ec.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/x448.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/__init__.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/dh.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/aead.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/rsa.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/x25519.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/decode_asn1.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/hmac.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/backend.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/ed25519.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/poly1305.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/cmac.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/hashes.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/ciphers.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      copying src/cryptography/hazmat/backends/openssl/dsa.py -> build/lib.linux-x86_64-cpython-39/cryptography/hazmat/backends/openssl
      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 '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 '.circleci'
      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-wmr23bko/overlay/lib/python3.9/site-packages/setuptools/command/build_py.py:201: _Warning: Package 'cryptography.hazmat.bindings._rust' is absent from the `packages` configuration.
      !!

As I mentioned above, install the dpkg of the python crypto library and you’ll get around the need to compile your own version (which requires installing the rust compiler and waiting, which is another way to get there)

Hi,
I did run the command command you listed and this was the response:
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
python3-cryptography is already the newest version (3.3.2-1).
The following package was automatically installed and is no longer required:
sse3-support
Use ‘sudo apt autoremove’ to remove it.
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

Sorry, I’m not a Linux guy, so this stuff is above my head. Thanks for your help.

Try running this command:

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

And then try and update again. Does that help?

1 Like

Is it being 64 bit OK?
IMG_1263

Yes, because it isn’t 64 bit Raspberry Pi OS. 64 bit Debian is ok on a non-ARM processor

1 Like

Peter,
I ran the command and then the update. It completed successfully.
Thanks for the help.
Steve