Python install on Raspberry PI OS

This Tutorial is to Be used at your Own Risk make sure you Back up your Home Assistant Files and any other files you don’t want to lose Before Starting. it is easy to break it takes time Rebuilding your Home assistant from Scratch

This instruction will install Python onto your System and allow you to us it as default.

This instruction is intended for a clean install of Home assistant best used with this instruction Installing Home Assistant

"DO NOT COPY AND PASTE STUFF IN QUOTES"

“LOG INTO THE TERMINAL.”

“GET LATEST UPDATES”

sudo apt update

sudo apt upgrade -y

“INSTALL THE DEPENDENCIES NEEDED TO BUILD”

sudo apt-get install -y build-essential tk-dev libncurses5-dev \
libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev \
libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev


“COMPILE (Takes Awhile) INSTALLS PYTHON INTO /usr/local/bin ”

“You can Change the Version to your choice before hitting enter.”
The Link that Shows all the Versions Python Versions

version=3.10.9

“This Starts the install.”

wget https://www.python.org/ftp/python/$version/Python-$version.tgz

tar zxf Python-$version.tgz

cd Python-$version

./configure --enable-optimizations

make -j4

sudo make altinstall

sudo apt -y autoremove




“CLEAN UP”

cd

sudo rm -rf Python-$version

rm Python-$version.tgz

“MAKE THIS VERSION DEFUALT, DO NOT DO THIS STEP AS IT BREAKS HOME ASSISTANT INSTALL




sudo ln -s /usr/local/bin/python3.9 /usr/bin/python3.9

echo "alias python=/usr/local/bin/python3.9" >> ~/.bashrc

echo "alias python3=/usr/local/bin/python3.9" >> ~/.bashrc

source ~/.bashrc

cd ..

. ~/.bashrc

“AND VERIFY: IF SHOWING 3.7 AND 2.7 HOME ASSISTANT SHOULD INSTALL

python3 -V

python2 -V

python -V

3 Likes

Thanks, but how do you run HASS ?

$ python3 --version
Python 3.9.6

$ python3 -m pip install homeassistant
[...]Successfully installed [...] homeassistant-2021.8.0 [...]
$ hass
bash: hass: command not found

OK, I have to add in bashrc :

export PATH=$PATH:/home/homeassistant/.local/bin

Now I can launch hass but with error:

2021-08-04 17:52:46 ERROR (MainThread) [homeassistant.auth.providers] Unable to load auth provider homeassistant: libffi.so.7: cannot open shared object file: No such file or directory

Okay if install installing home assistant then do not do the step that makes it default as the instructions states this it breaks home assistant install and there is a link to the instructions on installing home assistant at the top it is for home assistant core not sure about Hass method for installing

1 Like

On Python 3.9 I’m getting the following error (formatted for readability):

$ hass
2021-08-06 22:14:02 ERROR (MainThread) [homeassistant.auth.providers]
  Unable to load auth provider homeassistant:
    libffi.so.7:
      cannot open shared object file:
        No such file or directory

Raspbian Buster provides libffi6, not 7:

$ find /usr/lib -name libffi.*
/usr/lib/arm-linux-gnueabihf/libffi.so.6
/usr/lib/arm-linux-gnueabihf/pkgconfig/libffi.pc
/usr/lib/arm-linux-gnueabihf/libffi.so.6.0.4
/usr/lib/arm-linux-gnueabihf/libffi.a
/usr/lib/arm-linux-gnueabihf/libffi.so

As building takes quite some time, trying different build options consumes the whole evening. I’m now trying out 3.8.11. :crossed_fingers:

If you’re making 3.9 the default python ihome assistant will not work as stated in the step by step instructions the link to install home assistant after installing 3.9 is at the beginning of the page

Did you resolve the libffi.so.7 issue?

1 Like

I’ve build and installed Python 3.8 instead. Running successfully for a few days now.

1 Like

I had the same problem with missing libffi.so.7 after upgrading to Python 3.9.6 on raspbian buster which doesn’t provide libffi.so.7, only libffi.so.6.

I tried reinstalling Python 3.9.6 with “./configure --enable-optimizations –with-system-ffi” , but that did not fix the problem either. HA startup still needed the libffi.so.7 and libffi.so.7.0.4 modules.
In the end i created symbolic links for the missing two libffi7 modules, linked to the existing ffi.6 modules. Not the cleanest solution, but it worked immediaately and Raspbian Bullseye contains libffi7, so the circumvention will only be needed for a few weeks.

2 Likes

okay I found this prerelease of bullseyes

Python 3.9.7 does the same thing, I ended up going back to Python 3.8.*

1 Like

Thanks, it was exactly my problem, python 3.9 didn’t work and threw initialization errors.
My setup:
Raspberry Pi Zero W.
I installed Python 3.8 according to this instruction (slightly modified):

sudo apt-get update
sudo apt-get install -y build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
tar xf Python-3.8.0.tar.xz
cd Python-3.8.0

(my change starts from here):

./configure --enable-optimizations
make
sudo make install

after that I had a propper version of python and managed to install Home Assistant core:

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y python3 python3-dev python3-venv python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 tzdata
sudo useradd -rm homeassistant
sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant
sudo -u homeassistant -H -s
cd /srv/homeassistant
python3.8 -m venv .
source bin/activate
python3 -m pip install wheel
pip3 install homeassistant
hass

Once again thanks for the tips @Codec303 @botje !

1 Like

You can install libffi7.so on raspberry OS from source. libffi7 source is Release libffi v3.3 · libffi/libffi · GitHub

wget "https://github.com/libffi/libffi/releases/download/v3.3/libffi-3.3.tar.gz"
tar zxf libffi-3.3.tar.gz
cd libffi-3.3
./configure
sudo make install
sudo ldconfig

After this the homeassistant can be run under python 3.9.x.

17 Likes

Thanks @torkis you saved my day :slight_smile: HA is now successfully starting with Python 3.9.x.

2 Likes

Great, it works for me (Python 3.9.0, homeassistant latest): you are the best!
Really thank you!

You welcome, but the new Bullseye based Raspberry OS version already updated to Python 3.9

Awesome, thanks!

At least for me, compiling Python 3.9 from source and using it on Raspbian Buster that (by default?) uses piwheels.org caused errors like this in the HA log:

2021-11-30 21:28:01 ERROR (MainThread) [homeassistant.config] Platform error: binary_sensor
Traceback (most recent call last):
  File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/numpy/core/__init__.py", line 22, in <module>
    from . import multiarray
  File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/numpy/core/multiarray.py", line 12, in <module>
    from . import overrides
  File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/numpy/core/overrides.py", line 7, in <module>
    from numpy.core._multiarray_umath import (
ImportError: /lib/arm-linux-gnueabihf/libm.so.6: version `GLIBC_2.29' not found (required by /srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/numpy/core/_multiarray_umath.cpython-39-arm-linux-gnueabihf.so)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/homeassistant/config.py", line 887, in async_process_component_config
    platform = p_integration.get_platform(domain)
  File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/homeassistant/loader.py", line 530, in get_platform
    cache[full_name] = self._import_platform(platform_name)
  File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/homeassistant/loader.py", line 535, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/homeassistant/components/trend/binary_sensor.py", line 6, in <module>
    import numpy as np
  File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/numpy/__init__.py", line 150, in <module>
    from . import core
  File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/numpy/core/__init__.py", line 48, in <module>
    raise ImportError(msg)
ImportError: 

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

    https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

  * The Python version is: Python3.9 from "/srv/homeassistant_venv_3.9.9/bin/python3.9"
  * The NumPy version is: "1.21.2"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: /lib/arm-linux-gnueabihf/libm.so.6: version `GLIBC_2.29' not found (required by /srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/numpy/core/_multiarray_umath.cpython-39-arm-linux-gnueabihf.so)

My guess is that the numpy wheel installed when Python 3.9 is used has been compiled on Raspbian Bullseye, which obviously has a newer version of glibc. I solved this specific problem by reinstalliing numpy with --no-binary (when logged in as the HA user):

source /srv/homeassistant_venv_3.9.9/bin/activate
pip3 install --ignore-installed numpy --no-binary :all:

After that, I also commented out the extra-index-url=https://www.piwheels.org/simple setting in /etc/pip.conf to reduce the risk for something similar happening in the future. NOTE! This means that HA updates may take much longer because dependencies may compiled from source instead of installed as pre-compiled binaries.

[global]
#extra-index-url=https://www.piwheels.org/simple
1 Like

thanks @torkis and @slovdahl

you have lit my way :stuck_out_tongue_winking_eye:

I think the definitive solution is install raspbian bullseye 11 in my RaspPi.

¿Someone has done it and it works for them?

now HA need python 3.9 in 2022.1 version

I’m not sure if my suggestion from 2 weeks ago works for Raspbian Buster any more. Updating to 2021.12 did not work out for me at least, I got build failures for the cryptography that I could not solve. I just bit the bullet and switched to Docker for now…

Building wheels for collected packages: cryptography
  Building wheel for cryptography (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: /srv/homeassistant_venv_3.9.9/bin/python3.9 /srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmp3zdi2k8p
       cwd: /tmp/pip-install-ixbbwcvs/cryptography
  Complete output (208 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-armv7l-3.9
  creating build/lib.linux-armv7l-3.9/cryptography
  copying src/cryptography/fernet.py -> build/lib.linux-armv7l-3.9/cryptography
  copying src/cryptography/exceptions.py -> build/lib.linux-armv7l-3.9/cryptography
  copying src/cryptography/utils.py -> build/lib.linux-armv7l-3.9/cryptography
  copying src/cryptography/__about__.py -> build/lib.linux-armv7l-3.9/cryptography
  copying src/cryptography/__init__.py -> build/lib.linux-armv7l-3.9/cryptography
  creating build/lib.linux-armv7l-3.9/cryptography/x509
  copying src/cryptography/x509/extensions.py -> build/lib.linux-armv7l-3.9/cryptography/x509
  copying src/cryptography/x509/certificate_transparency.py -> build/lib.linux-armv7l-3.9/cryptography/x509
  copying src/cryptography/x509/base.py -> build/lib.linux-armv7l-3.9/cryptography/x509
  copying src/cryptography/x509/name.py -> build/lib.linux-armv7l-3.9/cryptography/x509
  copying src/cryptography/x509/ocsp.py -> build/lib.linux-armv7l-3.9/cryptography/x509
  copying src/cryptography/x509/oid.py -> build/lib.linux-armv7l-3.9/cryptography/x509
  copying src/cryptography/x509/general_name.py -> build/lib.linux-armv7l-3.9/cryptography/x509
  copying src/cryptography/x509/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/x509
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat
  copying src/cryptography/hazmat/_oid.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat
  copying src/cryptography/hazmat/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings
  copying src/cryptography/hazmat/bindings/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/backends
  copying src/cryptography/hazmat/backends/interfaces.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends
  copying src/cryptography/hazmat/backends/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/keywrap.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/padding.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/constant_time.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/_serialization.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/hashes.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/_cipheralgorithm.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/poly1305.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/cmac.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/_asymmetric.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  copying src/cryptography/hazmat/primitives/hmac.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings/openssl
  copying src/cryptography/hazmat/bindings/openssl/_conditional.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings/openssl
  copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings/openssl
  copying src/cryptography/hazmat/bindings/openssl/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings/openssl
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/encode_asn1.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/ciphers.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/ec.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/ed448.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/dsa.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/decode_asn1.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/x448.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/utils.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/ed25519.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/aead.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/dh.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/x509.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/hashes.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/rsa.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/poly1305.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/cmac.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/x25519.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/backend.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  copying src/cryptography/hazmat/backends/openssl/hmac.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/backends/openssl
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/ciphers
  copying src/cryptography/hazmat/primitives/ciphers/algorithms.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/ciphers
  copying src/cryptography/hazmat/primitives/ciphers/aead.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/ciphers
  copying src/cryptography/hazmat/primitives/ciphers/base.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/ciphers
  copying src/cryptography/hazmat/primitives/ciphers/modes.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/ciphers
  copying src/cryptography/hazmat/primitives/ciphers/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/ciphers
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/serialization
  copying src/cryptography/hazmat/primitives/serialization/pkcs7.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/serialization
  copying src/cryptography/hazmat/primitives/serialization/ssh.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/serialization
  copying src/cryptography/hazmat/primitives/serialization/pkcs12.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/serialization
  copying src/cryptography/hazmat/primitives/serialization/base.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/serialization
  copying src/cryptography/hazmat/primitives/serialization/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/serialization
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/kbkdf.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/concatkdf.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/scrypt.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/x963kdf.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/kdf
  copying src/cryptography/hazmat/primitives/kdf/hkdf.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/kdf
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/ec.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/ed448.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/dsa.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/padding.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/x448.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/utils.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/ed25519.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/dh.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/rsa.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/types.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/x25519.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  copying src/cryptography/hazmat/primitives/asymmetric/__init__.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/asymmetric
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/twofactor
  copying src/cryptography/hazmat/primitives/twofactor/totp.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/twofactor
  copying src/cryptography/hazmat/primitives/twofactor/hotp.py -> build/lib.linux-armv7l-3.9/cryptography/hazmat/primitives/twofactor
  copying src/cryptography/hazmat/primitives/twofactor/__init__.py -> build/lib.linux-armv7l-3.9/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.linux-armv7l-3.9/cryptography
  creating build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/__init__.pyi -> build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/asn1.pyi -> build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/ocsp.pyi -> build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings/_rust
  copying src/cryptography/hazmat/bindings/_rust/x509.pyi -> build/lib.linux-armv7l-3.9/cryptography/hazmat/bindings/_rust
  running build_ext
  running build_rust
      Updating crates.io index

      =============================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.9
      platform: Linux-5.10.63-v7l+-armv7l-with-glibc2.28
      pip: n/a
      setuptools: 59.7.0
      setuptools_rust: 1.1.2
      =============================DEBUG ASSISTANCE=============================

  Traceback (most recent call last):
    File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module>
      main()
    File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/srv/homeassistant_venv_3.9.9/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 204, in build_wheel
      return _build_backend().build_wheel(wheel_directory, config_settings,
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 230, in build_wheel
      return self._build_with_temp_dir(['bdist_wheel'], '.whl',
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 215, in _build_with_temp_dir
      self.run_setup()
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 158, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 39, in <module>
      setup(
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 153, in setup
      return distutils.core.setup(**attrs)
    File "/usr/local/lib/python3.9/distutils/core.py", line 148, in setup
      dist.run_commands()
    File "/usr/local/lib/python3.9/distutils/dist.py", line 966, in run_commands
      self.run_command(cmd)
    File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/wheel/bdist_wheel.py", line 299, in run
      self.run_command('build')
    File "/usr/local/lib/python3.9/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/usr/local/lib/python3.9/distutils/command/build.py", line 135, in run
      self.run_command(cmd_name)
    File "/usr/local/lib/python3.9/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/local/lib/python3.9/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/setuptools_rust/setuptools_ext.py", line 132, in run
      build_rust.run()
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/setuptools_rust/command.py", line 101, in run
      self.run_for_extension(ext)
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/setuptools_rust/build.py", line 108, in run_for_extension
      dylib_paths = self.build_extension(ext, self.target)
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/setuptools_rust/build.py", line 139, in build_extension
      target_dir = _base_cargo_target_dir(ext)
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/setuptools_rust/build.py", line 673, in _base_cargo_target_dir
      target_directory = ext._metadata()["target_directory"]
    File "/tmp/pip-build-env-2c75n4ga/overlay/lib/python3.9/site-packages/setuptools_rust/extension.py", line 200, in _metadata
      self._cargo_metadata = json.loads(subprocess.check_output(metadata_command))
    File "/usr/local/lib/python3.9/subprocess.py", line 424, in check_output
      return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
    File "/usr/local/lib/python3.9/subprocess.py", line 528, in run
      raise CalledProcessError(retcode, process.args,
  subprocess.CalledProcessError: Command '['cargo', 'metadata', '--manifest-path', 'src/rust/Cargo.toml', '--format-version', '1']' died with <Signals.SIGSEGV: 11>.
  ----------------------------------------
  ERROR: Failed building wheel for cryptography
Failed to build cryptography
ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly
WARNING: You are using pip version 20.2.4; however, version 21.3.1 is available.
You should consider upgrading via the '/srv/homeassistant_venv_3.9.9/bin/python3.9 -m pip install --upgrade pip' command.

Try
export CRYPTOGRAPHY_DONT_BUILD_RUST=1

can’t remember where I found this hint, if I recall correctly I used it successfully when installing esphome and running into issues with the “cryptography”-Installation

Armin

Thanks @torkis . You saved my day!