如何冻结仅在虚拟环境中安装的软件包?

74

如何在虚拟环境中仅冻结安装的软件包,而不是全局环境中的软件包?

8个回答

115
你需要使用-l--local选项来仅冻结本地包(不是全局的)。

-l指定仅冻结与当前项目相关联的包,而忽略全局安装的包。这个选项有时被称为“local mode”。

pip freeze -l > requirements.txt 

在执行 pip freeze -l 命令之前,请确保您已经在 virtualenv 中工作。


1
对我来说这个方法可行(或者对于旧版本使用 python): python3 -m pip freeze -l > requirements.txt - user2340939

11
在虚拟环境中只安装本地程序包。
pip freeze -l > requirements.txt # or --local instead of -l

仅限用户在虚拟环境中安装的本地程序包

pip freeze --user > requirements.txt

请进一步参阅文档:https://pip.pypa.io/en/stable/reference/pip_freeze/,以获取更多详细信息。

7

对于我(macOS),以下操作适用:

path/to/venv/bin/pip3 freeze -l

2

我正在使用Windows 10操作系统,Python版本为3.6。在命令提示符下激活了名为env的虚拟环境后,发现pip freeze -l无法正常工作(会出现错误),python -m pip freeze -l也不行(会获取全局包)。但是,如果进入我的虚拟环境Scripts目录并运行pip freezepip freeze -l,则可以正常工作。以下是使用这种解决方案/变通方法的示例,其中虚拟环境名为env

cd \env\Scripts
pip freeze > ..\..\requirements.txt

1
python venv/Path_to/bin/pip freeze -l 

1

我尝试了所有的方法,即使在虚拟环境中也没有生效。这段代码对我有效。它仅显示venv中的pip软件包。

venv\Scripts\python.exe venv\Scripts\pip.exe freeze > requirements.txt 

-1

在您的虚拟环境中安装需要冻结的任何内容,然后

pip freeze > requirements.txt

然后在虚拟环境中安装您不想冻结的软件包。


-1

尝试使用以下命令:

pip -E /path/to/env/ freeze

我认为-E参数是在requirements.txt文件内部使用的,用于显示版本控制项目地址。 - saul.shanabrook
它们有不同的“-E”参数:这个是命令行参数,告诉pip在给定的虚拟环境内运行。 - Dima Bildin
你能告诉我这个的文档在哪里吗?即使启用了全局站点包,它是否只冻结指定的虚拟环境? - saul.shanabrook
运行 "pip help" 并查看 "Options" 部分。 - Dima Bildin
1
`$ pip -E venv/ freeze Usage: pip COMMAND [OPTIONS]pip: error: no such option: -E` - Mittenchops

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接