Windows 10 Failed building wheel for cryptography

Hi All!

I’m having a bit of trouble installing Home Assistant directly to my Windows PC.

I’ve installed The latest Python build “python-3.9.0-amd64.exe” & and the latest C++Buildtools from the MS Visual Studios installer.

When I run:

py -m pip install homeassistant

I get this error when building wheel for Cryptography:

  Building wheel for cryptography (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: 'C:\Users\BRODI\AppData\Local\Programs\Python\Python39\python.exe' 'C:\Users\BRODI\AppData\Local\Programs\Python\Python39\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\BRODI\AppData\Local\Temp\tmpc62gdltv'
       cwd: C:\Users\BRODI\AppData\Local\Temp\pip-install-fl2m5e8j\cryptography
  Complete output (137 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.win-amd64-3.9
  creating build\lib.win-amd64-3.9\cryptography
  copying src\cryptography\exceptions.py -> build\lib.win-amd64-3.9\cryptography
  copying src\cryptography\fernet.py -> build\lib.win-amd64-3.9\cryptography
  copying src\cryptography\utils.py -> build\lib.win-amd64-3.9\cryptography
  copying src\cryptography\__about__.py -> build\lib.win-amd64-3.9\cryptography
  copying src\cryptography\__init__.py -> build\lib.win-amd64-3.9\cryptography
  creating build\lib.win-amd64-3.9\cryptography\hazmat
  copying src\cryptography\hazmat\_der.py -> build\lib.win-amd64-3.9\cryptography\hazmat
  copying src\cryptography\hazmat\_oid.py -> build\lib.win-amd64-3.9\cryptography\hazmat
  copying src\cryptography\hazmat\__init__.py -> build\lib.win-amd64-3.9\cryptography\hazmat
  creating build\lib.win-amd64-3.9\cryptography\x509
  copying src\cryptography\x509\base.py -> build\lib.win-amd64-3.9\cryptography\x509
  copying src\cryptography\x509\certificate_transparency.py -> build\lib.win-amd64-3.9\cryptography\x509
  copying src\cryptography\x509\extensions.py -> build\lib.win-amd64-3.9\cryptography\x509
  copying src\cryptography\x509\general_name.py -> build\lib.win-amd64-3.9\cryptography\x509
  copying src\cryptography\x509\name.py -> build\lib.win-amd64-3.9\cryptography\x509
  copying src\cryptography\x509\ocsp.py -> build\lib.win-amd64-3.9\cryptography\x509
  copying src\cryptography\x509\oid.py -> build\lib.win-amd64-3.9\cryptography\x509
  copying src\cryptography\x509\__init__.py -> build\lib.win-amd64-3.9\cryptography\x509
  creating build\lib.win-amd64-3.9\cryptography\hazmat\backends
  copying src\cryptography\hazmat\backends\interfaces.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends
  copying src\cryptography\hazmat\backends\__init__.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends
  creating build\lib.win-amd64-3.9\cryptography\hazmat\bindings
  copying src\cryptography\hazmat\bindings\__init__.py -> build\lib.win-amd64-3.9\cryptography\hazmat\bindings
  creating build\lib.win-amd64-3.9\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\cmac.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\constant_time.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\hashes.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\hmac.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\keywrap.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\padding.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\poly1305.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\__init__.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives
  creating build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\aead.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\backend.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\ciphers.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\cmac.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\decode_asn1.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\dh.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\dsa.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\ec.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\ed25519.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\ed448.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\encode_asn1.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\hashes.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\hmac.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\ocsp.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\poly1305.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\rsa.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\utils.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\x25519.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\x448.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\x509.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\__init__.py -> build\lib.win-amd64-3.9\cryptography\hazmat\backends\openssl
  creating build\lib.win-amd64-3.9\cryptography\hazmat\bindings\openssl
  copying src\cryptography\hazmat\bindings\openssl\binding.py -> build\lib.win-amd64-3.9\cryptography\hazmat\bindings\openssl
  copying src\cryptography\hazmat\bindings\openssl\_conditional.py -> build\lib.win-amd64-3.9\cryptography\hazmat\bindings\openssl
  copying src\cryptography\hazmat\bindings\openssl\__init__.py -> build\lib.win-amd64-3.9\cryptography\hazmat\bindings\openssl
  creating build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\dh.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\dsa.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\ec.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\ed25519.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\ed448.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\padding.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\rsa.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\utils.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\x25519.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\x448.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\__init__.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\asymmetric
  creating build\lib.win-amd64-3.9\cryptography\hazmat\primitives\ciphers
  copying src\cryptography\hazmat\primitives\ciphers\aead.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\ciphers
  copying src\cryptography\hazmat\primitives\ciphers\algorithms.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\ciphers
  copying src\cryptography\hazmat\primitives\ciphers\base.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\ciphers
  copying src\cryptography\hazmat\primitives\ciphers\modes.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\ciphers
  copying src\cryptography\hazmat\primitives\ciphers\__init__.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\ciphers
  creating build\lib.win-amd64-3.9\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\concatkdf.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\hkdf.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\kbkdf.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\pbkdf2.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\scrypt.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\x963kdf.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\__init__.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\kdf
  creating build\lib.win-amd64-3.9\cryptography\hazmat\primitives\serialization
  copying src\cryptography\hazmat\primitives\serialization\base.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\serialization
  copying src\cryptography\hazmat\primitives\serialization\pkcs12.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\serialization
  copying src\cryptography\hazmat\primitives\serialization\ssh.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\serialization
  copying src\cryptography\hazmat\primitives\serialization\__init__.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\serialization
  creating build\lib.win-amd64-3.9\cryptography\hazmat\primitives\twofactor
  copying src\cryptography\hazmat\primitives\twofactor\hotp.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\twofactor
  copying src\cryptography\hazmat\primitives\twofactor\totp.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\twofactor
  copying src\cryptography\hazmat\primitives\twofactor\utils.py -> build\lib.win-amd64-3.9\cryptography\hazmat\primitives\twofactor
  copying src\cryptography\hazmat\primitives\twofactor\__init__.py -> build\lib.win-amd64-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 found matching 'azure-pipelines.yml'
  warning: no previously-included files found matching '.azure-pipelines'
  warning: no previously-included files found matching '.travis.yml'
  warning: no previously-included files found matching '.travis'
  warning: no previously-included files matching '*' found under directory '.azure-pipelines'
  warning: no previously-included files matching '*' found under directory '.travis'
  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 'dev-requirements.txt'
  warning: no previously-included files found matching 'rtd-requirements.txt'
  warning: no previously-included files found matching 'tox.ini'
  writing manifest file 'src\cryptography.egg-info\SOURCES.txt'
  running build_ext
  generating cffi module 'build\\temp.win-amd64-3.9\\Release\\_padding.c'
  creating build\temp.win-amd64-3.9
  creating build\temp.win-amd64-3.9\Release
  generating cffi module 'build\\temp.win-amd64-3.9\\Release\\_constant_time.c'
  generating cffi module 'build\\temp.win-amd64-3.9\\Release\\_openssl.c'
  building '_openssl' extension
  creating build\temp.win-amd64-3.9\Release\build
  creating build\temp.win-amd64-3.9\Release\build\temp.win-amd64-3.9
  creating build\temp.win-amd64-3.9\Release\build\temp.win-amd64-3.9\Release
  C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\BRODI\AppData\Local\Programs\Python\Python39\include -IC:\Users\BRODI\AppData\Local\Programs\Python\Python39\include -IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\include -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt /Tcbuild\temp.win-amd64-3.9\Release\_openssl.c /Fobuild\temp.win-amd64-3.9\Release\build\temp.win-amd64-3.9\Release\_openssl.obj
  _openssl.c
  build\temp.win-amd64-3.9\Release\_openssl.c(575): fatal error C1083: Cannot open include file: 'openssl/opensslv.h': No such file or directory
  error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.27.29110\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
  ----------------------------------------
  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

Now I’ve attempted to do my due diligence before posting here. And attempted to follow the instructions laid out on Cryptography’s website

They say to just do:

py -m pip install cryptography

Which I did, and got the following in response:

C:\Users\BRODI>py -m pip install cryptography
Requirement already satisfied: cryptography in c:\users\brodi\appdata\local\programs\python\python39\lib\site-packages (3.1.1)
Requirement already satisfied: cffi!=1.11.3,>=1.8 in c:\users\brodi\appdata\local\programs\python\python39\lib\site-packages (from cryptography) (1.14.3)
Requirement already satisfied: six>=1.4.1 in c:\users\brodi\appdata\local\programs\python\python39\lib\site-packages (from cryptography) (1.15.0)
Requirement already satisfied: pycparser in c:\users\brodi\appdata\local\programs\python\python39\lib\site-packages (from cffi!=1.11.3,>=1.8->cryptography) (2.20)

I attempted to run Home Assistant and apparently it wasn’t installed. So I ran the installer again and wound up getting the same error.

Finally I went to plan B. I installed the latest OpenSSL binary distribution from Softpedia. Win64OpenSSL-1_1_1h.exe, and attempted to use OpenSSL by creating the environment variables similar to the ones on Cryptography’s Website.

Example:

C:\> \path\to\vcvarsall.bat x86_amd64
C:\> set LIB=C:\OpenSSL-win64\lib;%LIB%
C:\> set INCLUDE=C:\OpenSSL-win64\include;%INCLUDE%
C:\> pip install cryptography

Mine:

Variable Name: HomeAssistant 1
Varriable Value: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat x86_amd64

Variable Name: HomeAssistant 2
Variable Value: C:\> set LIB=C:\Program Files\OpenSSL-Win64\lib;%LIB%

Variable Name: HomeAssistant 3
Variable Value: C:\> set INCLUDE=C:\Program Files\OpenSSL-Win64\include;%INCLUDE%

Variable Name: HomeAssistant 4
Variable Value: C:\> pip install cryptography

I restarted my computer and tried to install Home Assistant one last time and again the same error popped up.

Can someone tell me what the heck I’m doing wrong?! I know I can run it as a Virtual Machine but I would rather run it locally. But if that’s what I have to do I guess I’ll do it…

Thanks in advanced for the help,
~BJ


Legion Y740-17IRHg
Windows 10 64bit
Intel(R) Core™ i7-9750H CPU @ 2.60GHz
Ram 16.0 GB