在没有意识到这一点的情况下,我已经使用加密软件包好几个月了,但突然间它无法构建,这让我的项目开发陷入停顿。
事实证明,密码学是我的Pipfile中的一个其他包的依赖项:apns2
。正如我所说,它一直运行良好,但我的环境一定发生了变化。这是我的Pipfile,只隔离了那个包:
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[requires]
python_version = "3.7.9"
[packages]
apns2 = "*"
[dev-packages]
这失败了。我使用pipenv
(最新版本2020.11.15(,所以当我现在运行它时,这是输出:
# pipenv install
Creating a virtualenv for this project...
Pipfile: /Users/dylan/Dev/RideHare/server/Pipfile
Using /Users/dylan/.pyenv/versions/3.7.9/bin/python3.7m (3.7.9) to create virtualenv...
⠏ Creating virtual environment...created virtual environment CPython3.7.9.final.0-64 in 502ms
creator CPython3Posix(dest=/Users/dylan/.local/share/virtualenvs/server-2uc2X-TS, clear=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/dylan/Library/Application Support/virtualenv)
added seed packages: pip==20.2.2, setuptools==51.0.0, wheel==0.35.1
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
✔ Successfully created virtual environment!
Virtualenv location: /Users/dylan/.local/share/virtualenvs/server-2uc2X-TS
Installing dependencies from Pipfile.lock (aa4cd9)...
An error occurred while installing cryptography==3.3.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' --hash=sha256:84ef7a0c10c24a7773163f917f1cb6b4444597efd505a8aed0a22e8c4780f27e --hash=sha256:788a3c9942df5e4371c199d10383f44a105d67d401fb4304178020142f020244 --hash=sha256:9f6b0492d111b43de5f70052e24c1f0951cb9e6022188ebcb1cc3a3d301469b0 --hash=sha256:a69bd3c68b98298f490e84519b954335154917eaab52cf582fa2c5c7efc6e812 --hash=sha256:b4890d5fb9b7a23e3bf8abf5a8a7da8e228f1e97dc96b30b95685df840b6914a --hash=sha256:0003a52a123602e1acee177dc90dd201f9bb1e73f24a070db7d36c588e8f5c7d --hash=sha256:7e177e4bea2de937a584b13645cab32f25e3d96fc0bc4a4cf99c27dc77682be6 --hash=sha256:dc42f645f8f3a489c3dd416730a514e7a91a59510ddaadc09d04224c098d3302 --hash=sha256:69e836c9e5ff4373ce6d3ab311c1a2eed274793083858d3cd4c7d12ce20d5f9c --hash=sha256:9e21301f7a1e7c03dbea73e8602905a4ebba641547a462b26dd03451e5769e7c --hash=sha256:0e85aaae861d0485eb5a79d33226dd6248d2a9f133b81532c8f5aae37de10ff7 --hash=sha256:c366df0401d1ec4e548bebe8f91d55ebcc0ec3137900d214dd7aac8427ef3030 --hash=sha256:594a1db4511bc4d960571536abe21b4e5c3003e8750ab8365fafce71c5d86901 --hash=sha256:83d9d2dfec70364a74f4e7c70ad04d3ca2e6a08b703606993407bf46b97868c5! Will try again.
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 10/10 — 00:00:08
Installing initially failed dependencies...
[InstallError]: File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/cli/command.py", line 233, in install
[InstallError]: retcode = do_install(
[InstallError]: File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/core.py", line 2052, in do_install
[InstallError]: do_init(
[InstallError]: File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/core.py", line 1304, in do_init
[InstallError]: do_install_dependencies(
[InstallError]: File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/core.py", line 899, in do_install_dependencies
[InstallError]: batch_install(
[InstallError]: File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/core.py", line 796, in batch_install
[InstallError]: _cleanup_procs(procs, failed_deps_queue, retry=retry)
[InstallError]: File "/usr/local/Cellar/pipenv/2020.11.15/libexec/lib/python3.9/site-packages/pipenv/core.py", line 703, in _cleanup_procs
[InstallError]: raise exceptions.InstallError(c.dep.name, extra=err_lines)
[pipenv.exceptions.InstallError]: Looking in indexes: https://pypi.python.org/simple
[pipenv.exceptions.InstallError]: Collecting cryptography==3.3.1
[pipenv.exceptions.InstallError]: Using cached cryptography-3.3.1.tar.gz (539 kB)
[pipenv.exceptions.InstallError]: ERROR: Disabling PEP 517 processing is invalid: project specifies a build backend of setuptools.build_meta in pyproject.toml
ERROR: Couldn't install package: cryptography
Package installation failed...
☤ ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/1 — 00:00:01
如果不是Pipfile中的apns2行,而是显式地替换密码学(crytography="*"(,它也会以同样的方式失败。
如果您使用的是最新的macOS版本,pipenv virtualenv中的默认pip版本会错误地检测到您的操作系统版本,这会导致查找兼容的轮子失败(它将开始编译加密依赖项(。
为了避免它的根问题,你可以将pip(在virtualenv中(升级到正确检测macos的版本:
pipenv shell
pip install -U pip
该错误已在pip版本20.3(2020-11-30(中修复https://github.com/pypa/pip/issues/9138
这些令人困惑的错误消息是由于以下事实造成的:如果pipenv
由于某种原因未能构建cryptography
,它会再次尝试使用--no-use-pep517
(请参阅下面的注释(,然后我们会看到那些PEP 517禁用错误,而不是根本原因!
要查找实际问题,请尝试pip install cryptography
(而不是pipenv
(,以便查看根本原因。
您可能需要使用apt-get install
、apk add
、brew install
或其他软件在平台上安装rust
和/或cargo
或openssl
,然后重试。
一旦以这种方式解决了问题,pipenv
的安装就应该可以工作了。
另请参阅cryptography
包github问题#5773
似乎cryptography
软件包只能与pip
一起安装,而不能与pipenv
一起安装,所以首先执行此操作。。。
brew install pkg-config libffi openssl
env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography
(命令取自这个问题。(
然后我可以运行pipenv install
,它构建和安装一切都很好。
我遇到了一个类似的问题(使用cffi
而不是cryptography
(。我升级了我的pipenv版本(专门为我使用pip3 install --upgrade pipenv
(,它解决了这个问题。
cryptography
不可管道安装的想法可以被揭穿:
编辑:我刚刚看到https://pypi.org/project/cryptography/#historyv3.4.3在几个小时前发布。
mkdir cryptography_test
❯ cd cryptography_test
❯ pipenv --version
pipenv, version 2020.11.15
❯ pip --version
pip 20.3.1 from /home/reinv/.local/lib/python3.8/site-packages/pip (python 3.8)
❯ pipenv install cryptography
Creating a virtualenv for this project...
Pipfile: /home/reinv/Documents/cryptography_test/Pipfile
Using /usr/bin/python3.8 (3.8.5) to create virtualenv...
⠼ Creating virtual environment...created virtual environment CPython3.8.5.final.0-64 in 246ms
creator CPython3Posix(dest=/home/reinv/.local/share/virtualenvs/cryptography_test-tHdlLBeP, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/reinv/.local/share/virtualenv)
added seed packages: pip==20.3.1, setuptools==51.1.2, wheel==0.36.2
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
✔ Successfully created virtual environment!
Virtualenv location: /home/reinv/.local/share/virtualenvs/cryptography_test-tHdlLBeP
Creating a Pipfile for this project...
Installing cryptography...
Adding cryptography to Pipfile's [packages]...
✔ Installation Succeeded
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success!
Updated Pipfile.lock (8ed4d5)!
Installing dependencies from Pipfile.lock (8ed4d5)...
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
❯ pipenv shell
Launching subshell in virtual environment...
❯ . /home/reinv/.local/share/virtualenvs/cryptography_test-tHdlLBeP/bin/activate
❯ pip list
Package Version
------------ -------
cffi 1.14.4
cryptography 3.4.3
pip 20.3.1
pycparser 2.20
setuptools 51.1.2
wheel 0.36.2
为什么现在这样做了,我不知道,如果我把一整套安装的ubuntu包转储到我的系统上,我也不会帮忙。是的,cryptography
突然也开始破坏ansible
的构建(作为子依赖项((这让我来到了这里(。我也在使用pipenv,但问题是为什么pipenv一开始就不能像@Dylan建议的那样安装软件包,因为据我所知,pipenv也使用pip作为软件包安装程序。
我不得不查一下什么奇怪的";禁用PEP517处理是无效的";消息的意思是,但我想这里已经解释过了:https://github.com/pypa/pipenv/issues/4481#issuecomment-706376607
简言之:首先编译步骤失败,然后尝试一个变通方法,在某个地方包含--no-use-pep517
选项,这会让你有点无所适从。(我没有费心阅读整个PEP517,因为它和我的双臂一样长,但我甚至连摘要都看不懂。(