如何修复 libssl.lib 未找到 Windows 10 上的错误?

How to fix libssl.lib not found error on Windows 10?

我正在尝试安装一个未公开的 python 包。但是,这里的问题不在于包,而在于 ms 构建工具找不到 libssl.lib。这是我在尝试安装加密时遇到的错误。请注意,我已经使用 pip 单独安装了密码学,但该软件包仍会尝试构建和安装它。

    ERROR: Command errored out with exit status 1:
   command: 'c:\users\admin\appdata\local\programs\python\python38-32\python.exe' 'c:\users\admin\appdata\local\programs\python\python38-32\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\SHREST~1\AppData\Local\Temp\tmpyfoyip74'
       cwd: C:\Users\admin\AppData\Local\Temp\pip-install-tz7xrs6s\cryptography_1a90283ee8854dbc8b5878dca15d28c1
  Complete output (146 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.win32-3.8
  creating build\lib.win32-3.8\cryptography
  copying src\cryptography\exceptions.py -> build\lib.win32-3.8\cryptography
  copying src\cryptography\fernet.py -> build\lib.win32-3.8\cryptography
  copying src\cryptography\utils.py -> build\lib.win32-3.8\cryptography
  copying src\cryptography\__about__.py -> build\lib.win32-3.8\cryptography
  copying src\cryptography\__init__.py -> build\lib.win32-3.8\cryptography
  creating build\lib.win32-3.8\cryptography\hazmat
  copying src\cryptography\hazmat\_oid.py -> build\lib.win32-3.8\cryptography\hazmat
  copying src\cryptography\hazmat\__init__.py -> build\lib.win32-3.8\cryptography\hazmat
  creating build\lib.win32-3.8\cryptography\x509
  copying src\cryptography\x509\base.py -> build\lib.win32-3.8\cryptography\x509
  copying src\cryptography\x509\certificate_transparency.py -> build\lib.win32-3.8\cryptography\x509
  copying src\cryptography\x509\extensions.py -> build\lib.win32-3.8\cryptography\x509
  copying src\cryptography\x509\general_name.py -> build\lib.win32-3.8\cryptography\x509
  copying src\cryptography\x509\name.py -> build\lib.win32-3.8\cryptography\x509
  copying src\cryptography\x509\ocsp.py -> build\lib.win32-3.8\cryptography\x509
  copying src\cryptography\x509\oid.py -> build\lib.win32-3.8\cryptography\x509
  copying src\cryptography\x509\__init__.py -> build\lib.win32-3.8\cryptography\x509
  creating build\lib.win32-3.8\cryptography\hazmat\backends
  copying src\cryptography\hazmat\backends\interfaces.py -> build\lib.win32-3.8\cryptography\hazmat\backends
  copying src\cryptography\hazmat\backends\__init__.py -> build\lib.win32-3.8\cryptography\hazmat\backends
  creating build\lib.win32-3.8\cryptography\hazmat\bindings
  copying src\cryptography\hazmat\bindings\__init__.py -> build\lib.win32-3.8\cryptography\hazmat\bindings
  creating build\lib.win32-3.8\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\cmac.py -> build\lib.win32-3.8\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\constant_time.py -> build\lib.win32-3.8\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\hashes.py -> build\lib.win32-3.8\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\hmac.py -> build\lib.win32-3.8\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\keywrap.py -> build\lib.win32-3.8\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\padding.py -> build\lib.win32-3.8\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\poly1305.py -> build\lib.win32-3.8\cryptography\hazmat\primitives
  copying src\cryptography\hazmat\primitives\__init__.py -> build\lib.win32-3.8\cryptography\hazmat\primitives
  creating build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\aead.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\backend.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\ciphers.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\cmac.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\decode_asn1.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\dh.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\dsa.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\ec.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\ed25519.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\ed448.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\encode_asn1.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\hashes.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\hmac.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\ocsp.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\poly1305.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\rsa.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\utils.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\x25519.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\x448.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\x509.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  copying src\cryptography\hazmat\backends\openssl\__init__.py -> build\lib.win32-3.8\cryptography\hazmat\backends\openssl
  creating build\lib.win32-3.8\cryptography\hazmat\bindings\openssl
  copying src\cryptography\hazmat\bindings\openssl\binding.py -> build\lib.win32-3.8\cryptography\hazmat\bindings\openssl
  copying src\cryptography\hazmat\bindings\openssl\_conditional.py -> build\lib.win32-3.8\cryptography\hazmat\bindings\openssl
  copying src\cryptography\hazmat\bindings\openssl\__init__.py -> build\lib.win32-3.8\cryptography\hazmat\bindings\openssl
  creating build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\dh.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\dsa.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\ec.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\ed25519.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\ed448.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\padding.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\rsa.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\utils.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\x25519.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\x448.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  copying src\cryptography\hazmat\primitives\asymmetric\__init__.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\asymmetric
  creating build\lib.win32-3.8\cryptography\hazmat\primitives\ciphers
  copying src\cryptography\hazmat\primitives\ciphers\aead.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\ciphers
  copying src\cryptography\hazmat\primitives\ciphers\algorithms.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\ciphers
  copying src\cryptography\hazmat\primitives\ciphers\base.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\ciphers
  copying src\cryptography\hazmat\primitives\ciphers\modes.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\ciphers
  copying src\cryptography\hazmat\primitives\ciphers\__init__.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\ciphers
  creating build\lib.win32-3.8\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\concatkdf.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\hkdf.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\kbkdf.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\pbkdf2.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\scrypt.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\x963kdf.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\kdf
  copying src\cryptography\hazmat\primitives\kdf\__init__.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\kdf
  creating build\lib.win32-3.8\cryptography\hazmat\primitives\serialization
  copying src\cryptography\hazmat\primitives\serialization\base.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\serialization
  copying src\cryptography\hazmat\primitives\serialization\pkcs12.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\serialization
  copying src\cryptography\hazmat\primitives\serialization\ssh.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\serialization
  copying src\cryptography\hazmat\primitives\serialization\__init__.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\serialization
  creating build\lib.win32-3.8\cryptography\hazmat\primitives\twofactor
  copying src\cryptography\hazmat\primitives\twofactor\hotp.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\twofactor
  copying src\cryptography\hazmat\primitives\twofactor\totp.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\twofactor
  copying src\cryptography\hazmat\primitives\twofactor\utils.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\twofactor
  copying src\cryptography\hazmat\primitives\twofactor\__init__.py -> build\lib.win32-3.8\cryptography\hazmat\primitives\twofactor
  running egg_info
  writing src\cryptography.egg-info\PKG-INFO
  writing dependency_links to src\cryptography.egg-info\dependency_links.txt
  writing requirements to src\cryptography.egg-info\requires.txt
  writing top-level names to src\cryptography.egg-info\top_level.txt
  reading manifest file 'src\cryptography.egg-info\SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  no previously-included directories found matching 'docs\_build'
  warning: no previously-included files found matching 'vectors'
  warning: no previously-included files matching '*' found under directory 'vectors'
  warning: no previously-included files 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.win32-3.8\Release\_padding.c'
  creating build\temp.win32-3.8
  creating build\temp.win32-3.8\Release
  generating cffi module 'build\temp.win32-3.8\Release\_constant_time.c'
  generating cffi module 'build\temp.win32-3.8\Release\_openssl.c'
  building '_openssl' extension
  creating build\temp.win32-3.8\Release\build
  creating build\temp.win32-3.8\Release\build\temp.win32-3.8
  creating build\temp.win32-3.8\Release\build\temp.win32-3.8\Release
  C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\VC\Tools\MSVC.28.29333\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Ic:\users\admin\appdata\local\programs\python\python38-32\include -Ic:\users\admin\appdata\local\programs\python\python38-32\include "-IC:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\VC\Tools\MSVC.28.29333\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK.8\include\um" "-IC:\Program Files (x86)\Windows Kits\include.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\include.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\include.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\include.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\include.0.18362.0\cppwinrt" /Tcbuild\temp.win32-3.8\Release\_openssl.c /Fobuild\temp.win32-3.8\Release\build\temp.win32-3.8\Release\_openssl.obj
  _openssl.c
  build\temp.win32-3.8\Release\_openssl.c(1509): warning C4098: 'Cryptography_HMAC_CTX_free': 'void' function returning a value
  build\temp.win32-3.8\Release\_openssl.c(12129): warning C4090: 'return': different 'const' qualifiers
  build\temp.win32-3.8\Release\_openssl.c(12140): warning C4090: '=': different 'const' qualifiers
  build\temp.win32-3.8\Release\_openssl.c(12155): warning C4090: 'return': different 'const' qualifiers
  build\temp.win32-3.8\Release\_openssl.c(12166): warning C4090: '=': different 'const' qualifiers
  build\temp.win32-3.8\Release\_openssl.c(28350): warning C4090: 'return': different 'const' qualifiers
  build\temp.win32-3.8\Release\_openssl.c(28373): warning C4090: '=': different 'const' qualifiers
  build\temp.win32-3.8\Release\_openssl.c(40431): warning C4090: 'function': different 'const' qualifiers
  build\temp.win32-3.8\Release\_openssl.c(40469): warning C4090: 'function': different 'const' qualifiers
  C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\VC\Tools\MSVC.28.29333\bin\HostX86\x86\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:c:\users\admin\appdata\local\programs\python\python38-32\libs /LIBPATH:c:\users\admin\appdata\local\programs\python\python38-32\PCbuild\win32 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\VC\Tools\MSVC.28.29333\lib\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK.8\lib\um\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\lib.0.18362.0\ucrt\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\lib.0.18362.0\um\x86" libssl.lib libcrypto.lib advapi32.lib crypt32.lib gdi32.lib user32.lib ws2_32.lib /EXPORT:PyInit__openssl build\temp.win32-3.8\Release\build\temp.win32-3.8\Release\_openssl.obj /OUT:build\lib.win32-3.8\cryptography\hazmat\bindings\_openssl.pyd /IMPLIB:build\temp.win32-3.8\Release\build\temp.win32-3.8\Release\_openssl.lib /NXCOMPAT /DYNAMICBASE
  LINK : fatal error LNK1181: cannot open input file 'libssl.lib'
  error: command 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29333\bin\HostX86\x86\link.exe' failed with exit status 1181
  ----------------------------------------
  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

我还在环境变量中加入了 OpenSSL

但是,我一直收到上述错误。我还重新安装了 Visual Studio build tools 2019。不确定我还能尝试什么来修复这个错误。

似乎正在使用的 libpath MS 构建工具没有 OpenSSL 库路径,因此找不到 libssl.lib。一种可能的解决方案是将 .lib 文件从您在环境变量中显示的 openssl 目录复制到 Python lib c:\users\admin\appdata\local\programs\python\python38-32\libs。应该可以。