powershell 运行 pip

Let*_*lle 3 python powershell pip

我想通过 powershell 脚本运行 python 模块升级。第一行有效。
但我不知道如何将文件正确读入第二个 pip 行。我收到此错误:

Could not find a version that satisfies the requirement Get-Content   

pip freeze| Out-File requirements.txt 
pip install --upgrade  Get-Content requirements.txt
Remove-Item  requirements.txt
Run Code Online (Sandbox Code Playgroud)

更新:现在可以使用更改后的第二行。

    pip freeze| Out-File requirements.txt 

    foreach($line in Get-Content requirements.txt) 
    {
      pip install --upgrade $line 
    }  

    Remove-Item  requirements.txt
Run Code Online (Sandbox Code Playgroud)

更新 2 现在,在 python 3.6 中,我使用这个脚本。

$(
$exclude = 'virtualenv', 'prompt-toolkit'
pip list --outdated --format=freeze  | ForEach{ $_.split("=")[0]} | Where-Object { $exclude -notcontains $_ } | ForEach { pip install -U $_ }                               
) *>&1 >> Python_Modules_Updates_Log.txt
Run Code Online (Sandbox Code Playgroud)

mkl*_*nt0 5

实现目标的最简单方法:

pip freeze | ForEach-Object { pip install --upgrade $_ }
Run Code Online (Sandbox Code Playgroud)

每个输出行都pip freeze通过管道传递,并且ForEach-Object脚本块pip install --upgrade对每个 ( $_) 进行调用。


至于你尝试过的

pip install --upgrade  Get-Content requirements.txt # !! BROKEN
Run Code Online (Sandbox Code Playgroud)

Get-Contentrequirements.txt只是传递给 的附加参数pip,它解释了您看到的错误消息。

pip- 没有-一次-r只接受一个pip install --upgrade (Get-Content requirements.txt)包(需求说明符),所以即使是类似的东西也不会起作用(它会将文件行requirements.txt作为单独的参数传递)。

对于-r,需要文件名参数,因此您可以尝试:

pip install --upgrade -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

请注意,从 Windows PowerShell v5.1 / PowerShell Core v6.0.2 开始,PowerShell 不支持Bash 样式的进程替换,其中命令的输出可以充当临时文件

pip install --upgrade -r <(pip freeze) # !! WISHFUL THINKING - does NOT work yet
Run Code Online (Sandbox Code Playgroud)

然而,这样的功能正在考虑之中