如何在非交互模式下运行 pip?

vla*_*mir 24 linux shell python pip

我使用的大多数工具都有一些模式(默认情况下通常是打开的),它们在运行命令时问我零问题。apt-get 是一个接近 pip 的例子。有 -y 选项使其非交互式。pip 有没有这样的选择?如果没有这样的选项,如何将它包装成一些脚本来实现我想要的。例如,我想运行类似的东西:

pipyes install mypackage
Run Code Online (Sandbox Code Playgroud)

目前我正在这样做,但想将其包装到脚本中:

yes | pip install mypackage
Run Code Online (Sandbox Code Playgroud)

实现 pip 非交互模式是“正确”的方式吗?

小智 29

有一个专门用于卸载命令的--yes 选项。打电话

pip uninstall --yes <some-package>
Run Code Online (Sandbox Code Playgroud)

卸载软件包而不要求确认。

对于安装,yes 命令中的管道似乎仍然是要走的路

根据您的用例,另一种可能有点矫枉过正的方法是使用专用工具。如果您在定期进行自动安装和配置方面遇到困难,这绝对是一种可行的方法。举个例子:SaltStacks状态系统很多方法可以自动与 pip 交互。这不仅用于编排服务器群,还可以通过直接运行salt-call在本地使用。请参阅有关 running salt masterless的介绍。


小智 8

即使没有记录在案,使用最新版本的 setuptools,您也可以做到

pip install --noinput ...
Run Code Online (Sandbox Code Playgroud)

......这会崩溃而不是挂在提示上。

  • 是的,是旧帖子,但对于任何路过的拾荒者,正确的选项(在 pip 版本 20.0.2 中对我有用)是`--no-input` (3认同)

小智 1

我距离 python/pip 专家还很远,但我已经将它用于各种目的好几年了,而且还没有遇到过直接使用交互式 pip install 的情况。对于不太直接的情况,它确实有广泛的选项(备用包索引、缓存、开发模式等)。如果您有一个需要一些交互的特定安装案例,我的猜测是您可以通过提供此处记录的专用选项的正确组合来自动化它。

卸载是我更习惯于要求交互(包括明确确认删除模块)的情况,它实际上支持您在问题中引用的 标准--yes 标志。