【问题标题】:powershell to run pippowershell 运行 pip
【发布时间】:2018-06-28 01:28:20
【问题描述】:

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

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

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

    pip freeze| Out-File requirements.txt 

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

    Remove-Item  requirements.txt

更新 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

【问题讨论】:

  • 在获取内容周围添加括号? pip install --upgrade (Get-Content requirements.txt)
  • @OwainEsau,带括号它确实运行没有错误,但升级没有发生。 ( Get-Content requirements.txt ) 是否模拟命令行上的 -r ,即 -r requirements.txt ?
  • 这个文本文件中是否有多行?因为如果有的话,每行都有一个 foreach 循环会更好。
  • 我刚刚看到更新

标签: python powershell pip


【解决方案1】:

实现目标的最简单方法:

pip freeze | ForEach-Object { pip install --upgrade $_ }

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


至于你尝试了什么

pip install --upgrade  Get-Content requirements.txt # !! BROKEN

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

pip - 没有 -r - 一次只接受 一个 包(需求说明符),所以即使像 pip install --upgrade (Get-Content requirements.txt) 这样的东西 not 也可以工作(它会通过文件requirements.txt 的行作为单个参数)。

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

pip install --upgrade -r requirements.txt

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

pip install --upgrade -r <(pip freeze) # !! WISHFUL THINKING - does NOT work yet

但是,这样的feature is being considered

【讨论】:

    猜你喜欢
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2021-12-18
    • 1970-01-01
    • 2021-08-15
    • 2013-09-10
    • 1970-01-01
    相关资源
    最近更新 更多