无法在 Cygwin 上安装 python 密码学
Posted
技术标签:
【中文标题】无法在 Cygwin 上安装 python 密码学【英文标题】:Can't install python cryptography on Cygwin 【发布时间】:2022-01-21 10:24:06 【问题描述】:我已经通过 cygwin 安装了 python38-cryptogrpahy 包 v.3.3.2-1 但是当我尝试通过 pip 安装结构时 - 它尝试构建它并失败并出现下一个错误:
$ pip install -r ./requirements.txt
Collecting fabric3
Using cached Fabric3-1.14.post1-py3-none-any.whl (92 kB)
Collecting paramiko<3.0,>=2.0
Using cached paramiko-2.8.1-py2.py3-none-any.whl (206 kB)
Requirement already satisfied: six>=1.10.0 in ./env/lib/python3.8/site-packages (from fabric3->-r ./requirements.txt (line 1)) (1.16.0)
Collecting pynacl>=1.0.1
Using cached PyNaCl-1.4.0-cp38-cp38-cygwin_3_3_3_x86_64.whl
Collecting bcrypt>=3.1.3
Using cached bcrypt-3.2.0-cp38-cp38-cygwin_3_3_3_x86_64.whl
Collecting cryptography>=2.5
Using cached cryptography-36.0.1.tar.gz (572 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting cffi>=1.1
Using cached cffi-1.15.0-cp38-cp38-cygwin_3_3_3_x86_64.whl
Requirement already satisfied: pycparser in ./env/lib/python3.8/site-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko<3.0,>=2.0->fabric3->-r ./requirements.txt (line 1)) (2.21)
Building wheels for collected packages: cryptography
Building wheel for cryptography (pyproject.toml) ... error
ERROR: Command errored out with exit status 1:
command: /home/dnester/repo/vastuf_server_common/containers/smart_home/rvalarm/env/bin/python /home/dnester/repo/vastuf_server_common/containers/smart_home/rvalarm/env/lib/python3.8/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmpojt6ejpa
cwd: /tmp/pip-install-cxk1g2b2/cryptography_9e2405fed34048fcbe4e2c9e871e31b6
Complete output (168 lines):
running bdist_wheel
running build
running build_py
creating build
creating build/lib.cygwin-3.3.3-x86_64-3.8
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
copying src/cryptography/exceptions.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
copying src/cryptography/fernet.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
copying src/cryptography/utils.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
copying src/cryptography/__about__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
copying src/cryptography/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat
copying src/cryptography/hazmat/_oid.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat
copying src/cryptography/hazmat/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
copying src/cryptography/x509/base.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
copying src/cryptography/x509/certificate_transparency.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
copying src/cryptography/x509/extensions.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
copying src/cryptography/x509/general_name.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
copying src/cryptography/x509/name.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
copying src/cryptography/x509/ocsp.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
copying src/cryptography/x509/oid.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
copying src/cryptography/x509/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/x509
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends
copying src/cryptography/hazmat/backends/interfaces.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends
copying src/cryptography/hazmat/backends/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings
copying src/cryptography/hazmat/bindings/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/cmac.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/constant_time.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/hashes.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/hmac.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/keywrap.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/padding.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/poly1305.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/_asymmetric.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/_cipheralgorithm.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/_serialization.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/aead.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/backend.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ciphers.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/cmac.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/decode_asn1.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/dh.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/dsa.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ec.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ed25519.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ed448.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/encode_asn1.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/hashes.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/hmac.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/poly1305.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/rsa.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/utils.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x25519.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x448.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x509.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/backends/openssl
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/_conditional.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/openssl
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/dh.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/dsa.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ec.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ed25519.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ed448.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/padding.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/rsa.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/types.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/utils.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/x25519.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/x448.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/asymmetric
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/aead.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/algorithms.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/base.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/modes.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/ciphers
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/concatkdf.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/hkdf.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/kbkdf.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/scrypt.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/x963kdf.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/kdf
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/base.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/pkcs12.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/pkcs7.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/ssh.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/__init__.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/serialization
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/hotp.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/totp.py -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/__init__.py -> build/lib.cygwin-3.3.3-x86_64-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 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.cygwin-3.3.3-x86_64-3.8/cryptography
creating build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/_rust
copying src/cryptography/hazmat/bindings/_rust/__init__.pyi -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/_rust
copying src/cryptography/hazmat/bindings/_rust/asn1.pyi -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/_rust
copying src/cryptography/hazmat/bindings/_rust/ocsp.pyi -> build/lib.cygwin-3.3.3-x86_64-3.8/cryptography/hazmat/bindings/_rust
copying src/cryptography/hazmat/bindings/_rust/x509.pyi -> build/lib.cygwin-3.3.3-x86_64-3.8/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.8.12
platform: CYGWIN_NT-10.0-22000-3.3.3-341.x86_64-x86_64-64bit-WindowsPE
pip: n/a
setuptools: 59.7.0
setuptools_rust: 1.1.2
=============================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.41.0.
----------------------------------------
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
我没有在 Cygwin 包中找到 Rust 编译器,也不想从源代码构建它。所以我想弄清楚为什么pip无法识别安装的加密包。
【问题讨论】:
3.3.2 是最后一个不需要rust
的 cryptography
版本,它在 Cygwin 上不可用。 ./requirements.txt
的内容是什么?
感谢@matzeri 的提示! requirements.txt
只有 fabric3
依赖。我添加了cryptography==3.3.2
,它现在工作正常。请添加答案以将其标记为解决方案。
不错。 PS:cygwin上应该没有pip
,而只有pip3
(或旧的pip2)命令。它是从哪里来的?
@matzeri,它来自 virtualenv。
【参考方案1】:
3.3.2 是最后一个不需要rust
的cryptography
版本。所以最后一个可能在 Cygwin 上可用,没有 rust
编译器。
似乎pip
正在尝试安装cryptography
的最新上游版本,因此强制要求cryptography==3.3.2
应该可以工作。
【讨论】:
【参考方案2】:尝试升级pip:python -m pip install --upgrade pip
【讨论】:
它是最新的:要求已经满足:pip in ./env/lib/python3.8/site-packages (21.3.1)以上是关于无法在 Cygwin 上安装 python 密码学的主要内容,如果未能解决你的问题,请参考以下文章