pip freeze 创建了一些奇怪的路径而不是包版本

Posted

技术标签:

【中文标题】pip freeze 创建了一些奇怪的路径而不是包版本【英文标题】:pip freeze creates some weird path instead of the package version 【发布时间】:2022-01-12 12:29:57 【问题描述】:

我正在开发一个 python 包。我使用pip freeze > requirements.txt 将所需的包添加到requirement.txt 文件中。但是,我意识到有些包,而不是包版本,前面有一些路径。

numpy==1.19.0
packaging==20.4
pandas @ file:///opt/concourse/worker/volumes/live/38d1301c-8fa9-4d2f-662e-34dddf33b183/volume/pandas_1592841668171/work
pandocfilters==1.4.2

然而,在环境中,我得到:

>>> pandas.__version__
'1.0.5'

你知道如何解决这个问题吗?

【问题讨论】:

不确定为什么会这样,但看起来 pip freeze 出于某种原因正在输出direct reference。 Github上有关于这个问题的讨论:pip freeze does not show version for in-place installs “pip list --format=freeze > requirements.txt”是否提供了预期的结果? 是的。 “pip list --format=freeze > requirements.txt”解决了这个问题。谢谢。 很高兴我能帮助你,如果我愿意,请考虑支持/接受我的回答;) 完成。我最近加入了***。 Upvoting 尚未激活:)。 【参考方案1】:

看起来这是pip freeze 版本20.1 中的一个未解决问题,当前的解决方法是使用:

pip list --format=freeze > requirements.txt

简而言之,这是由于将 pip freeze 的行为更改为包含 direct references 以用于从直接 URL 引用安装的发行版。

您可以在 GitHub 上阅读有关该问题的更多信息:

pip freeze does not show version for in-place installs

Output of "pip freeze" and "pip list --format=freeze" differ for packages installed via Direct URLs

Better freeze of distributions installed from direct URL references

【讨论】:

以上是关于pip freeze 创建了一些奇怪的路径而不是包版本的主要内容,如果未能解决你的问题,请参考以下文章

pip freeze 和 conda list 的区别

pip freeze vs pipreqs

pip freeze vs pipreqs

pip freeze vs pipreqs

pip freeze 命令输出中的“pkg-resources==0.0.0”是啥

使用 pip,我应该从 pip freeze 创建 requirements.txt,还是手动编辑 requirements.txt 文件?