产出比较显示出差异:
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
更全面的列表?
答案 0 :(得分:92)
当您使用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”文件。
答案 1 :(得分:27)
要回答此问题的第二部分,pip list
但不是pip freeze
中显示的两个包是setuptools
(即easy_install)和pip
本身。
看起来pip freeze
只是没有列出pip本身依赖的包。您可以使用--all
标志来显示这些包。
--all
不要在输出中跳过这些包:pip,setuptools,distribute,wheel
答案 2 :(得分:19)
查看pip documentation,它将两者的功能描述为:
点子列表
列出已安装的软件包,包括可编辑的软件包。
pip冻结
以需求格式输出已安装的软件包。
所以有两点不同:
输出格式freeze
为我们提供了标准要求格式,稍后可以使用pip install -r
来安装要求。
输出内容,pip list
包含pip freeze
没有的可编辑内容。
答案 3 :(得分:18)
主要区别在于pip freeze
的输出可以转储到requirements.txt文件中,稍后用于重新构建“冻结”环境。
换句话说,您可以运行:
pip freeze > frozen-requirements.txt
在一台计算机上,然后在另一台计算机上或在干净的环境中,您可以执行以下操作:
pip install -r frozen-requirements.txt
并且您将获得一个完全相同的环境,其安装与您在生成frozen-requirements.txt的原始环境中安装的完全相同。
答案 4 :(得分:7)
pip list
显示所有个已安装的软件包。
pip freeze
显示需求格式的通过pip
(或pipenv
,如果使用该工具)命令安装的软件包 YOU 。
在下面标记 设置工具 , pip , 滚轮 < / em>在pipenv shell
创建我的虚拟信封时安装。这些软件包不是由我使用pip
安装的:否:
test1 % pipenv shell
Creating a virtualenv for this project…
Pipfile: /Users/terrence/Development/Python/Projects/test1/Pipfile
Using /usr/local/Cellar/pipenv/2018.11.26_3/libexec/bin/python3.8 (3.8.1) to create virtualenv…
⠹ Creating virtual environment...
<SNIP>
Installing setuptools, pip, wheel...
done.
✔ Successfully created virtual environment!
<SNIP>
现在查看并比较我仅安装了 cool-lib 和 sampleproject 的各个命令的输出em>(其中 peppercorn 是依赖项):
test1 % pip freeze <== Packages I'VE installed w/ pip
-e git+https://github.com/gdamjan/hello-world-python-package.git@10<snip>71#egg=cool_lib
peppercorn==0.6
sampleproject==1.3.1
test1 % pip list <== All packages, incl. ones I've NOT installed w/ pip
Package Version Location
------------- ------- --------------------------------------------------------------------------
cool-lib 0.1 /Users/terrence/.local/share/virtualenvs/test1-y2Zgz1D2/src/cool-lib <== Installed w/ `pip` command
peppercorn 0.6 <== Dependency of "sampleproject"
pip 20.0.2
sampleproject 1.3.1 <== Installed w/ `pip` command
setuptools 45.1.0
wheel 0.34.2
答案 5 :(得分:0)
对于那些正在寻找解决方案的人。如果您不小心使用 pip
而不是 pip list
提出了 pip freeze
要求,并且想要转换为 pip freeze 格式。我为此编写了这个 R 脚本。
library(tidyverse)
pip_list = read_lines("requirements.txt")
pip_freeze = pip_list %>%
str_replace_all(" \\(", "==") %>%
str_replace_all("\\)$", "")
pip_freeze %>% write_lines("requirements.txt")
答案 6 :(得分:0)
pip list
列出已安装的包:显示所有已安装的包,即使是 pip 隐式安装的包
pip freeze
列出已安装的软件包:- 使用 pip 命令安装的软件包列表
pip freeze 有 --all
标志来显示所有的包。
其他区别是它呈现的输出,您可以通过运行命令来检查。