实现目标的最简单方法:
pip freeze | ForEach-Object { pip install --upgrade $_ }
每条输出线来自pip freeze
通过管道,并且ForEach-Object
脚本块调用pip install --upgrade
对于每个($_
).
As for 你尝试过什么:
pip install --upgrade Get-Content requirements.txt # !! BROKEN
Get-Content
and requirements.txt
只是传递给的附加参数pip
,这解释了您看到的错误消息。
pip
- 没有-r
- 只接受one一次打包(需求说明符),所以即使是类似的东西pip install --upgrade (Get-Content requirements.txt)
would not已经工作了(它会通过文件行requirements.txt
as 个别论点).
With -r
, a filename参数是必需的,所以你可以尝试:
pip install --upgrade -r requirements.txt
请注意,从 Windows PowerShell v5.1 / PowerShell Core v6.0.2 开始,PowerShell 不会not支持 Bash 风格的进程替换,其中命令的输出可以充当瞬态file:
pip install --upgrade -r <(pip freeze) # !! WISHFUL THINKING - does NOT work yet
然而,这样一个正在考虑功能 https://github.com/PowerShell/PowerShell/issues/4284.