Pip冷冻与Pip lis

2024-06-14 22:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

对产出的比较揭示了差异:

user@user-VirtualBox:~$ pip list
feedparser (5.1.3)
pip (1.4.1)
setuptools (1.1.5)
wsgiref (0.1.2)
user@user-VirtualBox:~$ pip freeze
feedparser==5.1.3
wsgiref==0.1.2

Pip的文档状态

freeze                      Output installed packages in requirements format.
list                        List installed packages.

但是什么是“需求格式”,为什么pip list会生成比pip freeze更全面的列表?


Tags: pipinstalled文档output状态packages差异setuptools
3条回答

主要的区别是pip freeze的输出可以转储到requirements.txt文件中,然后用于重新构建“冻结”环境。

换句话说,您可以运行: pip freeze > frozen-requirements.txt在一台计算机上,然后在另一台计算机上,或者在干净的环境中,您可以执行以下操作: pip install -r frozen-requirements.txt 您将得到一个完全相同的环境,其中安装的依赖项与您在生成frozen-requirements.txt的原始环境中安装的依赖项完全相同。

为了回答这个问题的第二部分,在pip list而不是pip freeze中显示的两个包是setuptools(很容易安装)和pip本身。

看起来pip freeze只是没有列出pip本身所依赖的包。您可以使用--all标志同时显示这些包。

来自the documentation

--all

Do not skip these packages in the output: pip, setuptools, distribute, wheel

使用virtualenv时,可以指定requirements.txt文件来安装所有依赖项。

典型用法:

$ pip install -r requirements.txt

要理解这些包,需要使用特定的格式pip,即

feedparser==5.1.3
wsgiref==0.1.2
django==1.4.2
...

这就是“需求格式”。

这里,django==1.4.2表示安装django版本1.4.2(即使最新版本是1.6.x)。 如果不指定==1.4.2,则将安装可用的最新版本。

您可以在“Virtualenv and pip Basics”中阅读更多内容, 以及官方的“Requirements File Format”文档。

相关问题 更多 >