为什么冻结冻结会返回一些“乱码”,而不是package == VERSION?

时间:2020-10-04 12:31:15

标签: python pip python-poetry

这是我所做的:

❯ pip freeze
aiohttp @ file:///Users/aiven/Library/Caches/pypoetry/artifacts/50/32/0b/b64b02b6cefa4c089d84ab9edf6f0d960ca26cfbe57fe0e693a00912da/aiohttp-3.6.2-py3-none-any.whl
async-timeout @ file:///Users/aiven/Library/Caches/pypoetry/artifacts/0d/5d/3e/630122e534c1b25e36c3142597c4b0b2e9d3f2e0a9cea9f10ac219f9a7/async_timeout-3.0.1-py3-none-any.whl
attrs @ file:///Users/aiven/Library/Caches/pypoetry/artifacts/7f/e7/44/32ca3c400bb4d8a2f1a91d1d3f22bbaee2f4727a037aad898fbf5d36ce/attrs-20.2.0-py2.py3-none-any.whl
chardet @ file:///Users/aiven/Library/Caches/pypoetry/artifacts/c2/02/35/0d93b80c730b360c5e3d9bdc1b8d1929dbd784ffa8e3db025c14c045e4/chardet-3.0.4-py2.py3-none-any.whl
...

点子版本:

❯ pip -V
pip 20.2.3 from /Users/aiven/projects/foobar/venv/lib/python3.8/site-packages/pip (python 3.8)

我期望这样的事情:

> pip freeze
foo==1.1.1
bar==0.2.1

pip freeze -h并不是很有帮助...

对于上下文:我使用poetry将软件包安装到virtualenv中。

1 个答案:

答案 0 :(得分:5)

这似乎来自支持PEP 610的更改。特别要参考Freezing an environment section。 “冻结”意味着什么的概念已扩展为包括为直接来源安装的软件包保留直接URL源。

诗歌与1.1.0一起引入了new installer,该诗歌现在可以处理依赖关系的工件的发现和下载。这与1.0.10中的行为不同,后者仅使pip处理发现和下载所需工件(轮子)的行为。这意味着,现在使用直接URL来源安装软件包。这导致pip freeze使用PEP 508中指定的直接参考格式(例如:package @ file://../package.whl)。对于感兴趣的人,有问题的URL将保存在虚拟环境的站点目录中的<package>-<version>.dist-info/direct_url.json中。

您可以使用以下命令获取旧格式的输出(不确定将来是否会更改)。

pip --disable-pip-version-check list --format=freeze
相关问题