代码之家  ›  专栏  ›  技术社区  ›  LetzerWille

运行pip的powershell

  •  3
  • LetzerWille  · 技术社区  · 8 年前

    我想运行python模块升级vie powershell脚本。 第一线工作。
    但我不知道如何将文件正确读入 第二条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
    

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

        pip freeze| Out-File requirements.txt 
    
        foreach($line in Get-Content requirements.txt) 
        {
          pip install --upgrade $line 
        }  
    
        Remove-Item  requirements.txt
    

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

    $(
    $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
    
    1 回复  |  直到 8 年前
        1
  •  4
  •   mklement0    8 年前

    实现目标的最简单方法:

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

    每个输出线来自 pip freeze 通过管道 ForEach-Object 脚本块调用 pip install --upgrade 对于每个( $_ )。


    至于 你尝试了什么 :

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

    Get-Content requirements.txt 只是将其他参数传递给 pip ,这解释了您看到的错误消息。

    pip公司 -无 -r -仅接受 一次打包(需求说明符),所以 pip install --upgrade (Get-Content requirements.txt) 工作正常(本应通过文件行 要求。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