【问题标题】:I'm trying to use python in powershell我正在尝试在 powershell 中使用 python
【发布时间】:2012-08-02 13:08:46
【问题描述】:

我正在尝试遵循 Zed Shaw 的《艰难学习 Python 指南》。我需要在 Powershell 中使用 python。我在C:\Python27 中安装了 Python 2.7.3。每当我在 Powershell 中键入 python 时,我都会收到一条错误消息,指出术语“python”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。我还输入了这个:[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User") 这是提供的建议解决方案,但在 Powershell 中键入 python 仍然没有任何作用。我可以输入“start python”,它会打开一个带有 python 的窗口,但我需要在 Powershell 中使用它。谢谢。

【问题讨论】:

  • 为我工作,我从未为 Python 设置任何路径。您使用的是哪个版本的 Powershell?我的是1.0的深蓝屏?只要确保 C:\Python27\ 在 PATH 列表中。 Powershell也应该在那里。我的是系统而不是用户。你为什么担心从命令行设置它?用你的窗户卢克。这是未来的力量。 :D
  • 请注意,任何从谷歌登陆这里的人,答案设置路径都是正确的,但这个问题可能源于没有赋予 python 安装程序设置路径本身所需的管理权限。另一种方法可能是简单地右键单击安装程序并选择以管理员身份运行,然后修复安装。如果仍然不起作用,请选择下面与您的 python 版本和安装目录相对应的 [Environment] 答案。
  • 这种方法不再是 Windows 的好建议。与其将 Python 的可执行文件直接添加到路径中,不如允许安装程序(现代安装程序)安装 plauncher。这会将py 命令添加到PATH,并且py 可用于调用任何特定已安装的Python 次要版本,而无需将其python.exe 添加到PATH

标签: python powershell python-2.7


【解决方案1】:

尝试这样设置路径:

 $env:path="$env:Path;C:\Python27"

【讨论】:

  • 有时您在 Windows 上安装 Python,但它没有正确配置路径。确保在 PowerShell 中输入 [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User") 以正确配置它。您还必须重新启动 PowerShell 或您的整个计算机才能真正修复它。
  • @LameBrains 当您在终端中创建变量之类的东西时,它只存在于当前会话中。如果你想让它“永久”,你需要将它添加到启动时运行的文件(配置文件/rc文件)中。在 Powershell 的情况下,键入 $profile 来找到你的。
  • 我安装了 Anaconda3。这成功了$env:path="$env:Path;C:\ProgramData\Anaconda3"$env:path="$env:Path;C:\ProgramData\Anaconda3\Scripts"(第二个命令允许我访问condaJupyter notebook
  • @blaylockbk 你在 Visual Studio 的哪里设置它? settings.json?
【解决方案2】:

$env:path="$env:Path;C:\Python27" 只会为当前会话设置它。下次打开 Powershell 时,您将不得不再次执行相同的操作。

[Environment]::SetEnvironmentVariable() 是正确的方法,它会永久设置您的 PATH 环境变量。在这种情况下,您只需再次启动 Powershell 即可看到效果。

【讨论】:

  • [Environment]::SetEnvironmentVariable() 你能详细说明如何让它工作吗?您对 Mike 命令的一次性使用是正确的。
【解决方案3】:

只需删除“用户”一词。它会起作用的。

【讨论】:

    【解决方案4】:

    以这种方式尝试命令:

    PS C:\Users\XXX>python.exe
    

    代替:

    C:\Users\XXX>python
    

    【讨论】:

    • Python.exe 为我工作。我应该怎么做才能使它适用于“python”
    【解决方案5】:

    不管怎样,这个命令为我做了(Python3.3):

    [System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:\Python33", "Machine")
    

    之后我只需要重新启动 Powershell。

    【讨论】:

    • 以管理员身份运行
    【解决方案6】:

    来自Python Guide,这对我有用(Python 2.7.9): [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27\;C:\Python27\Scripts\", "User")

    【讨论】:

    • 太棒了,谢谢伙计,在我的 Vs 代码重置路径后,我尝试了这个解决方案。它像魔术一样工作。但记得在power shell中运行这行代码后重启
    【解决方案7】:

    对于永久解决方案,我发现以下方法有效:

    [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python 3.5")
    

    【讨论】:

      【解决方案8】:

      这对我永久有效:

      [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27","User")

      【讨论】:

        【解决方案9】:

        目录设置不正确,请按照以下步骤操作。

        1. “我的电脑”>右键单击>属性>“系统属性”>“高级”选项卡
        2. “环境变量”>“路径”>“编辑”
        3. 在“变量值”框中,确保您看到以下内容:

          ;c:\python27\;c:\python27\scripts

        4. 单击“确定”,通过重新启动 Windows Powershell 测试此更改。输入

          蟒蛇

        5. 现在 python 版本 2 运行!耶!

        【讨论】:

        • C:\Python27\ C:\Python27\Scripts\ 为我做了,谢谢!
        • 这行得通!将这些添加到路径中:C:\ProgramData\Anaconda3C:\ProgramData\Anaconda3\Scripts
        • 使用Visual Studio和Anaconda的,添加以下两条路径:C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\Scripts
        【解决方案10】:

        作为MaxPRafferty mentioned:

        请注意任何从谷歌登陆这里的人,答案设置路径都是正确的,但这个问题可能源于没有给 python 安装程序提供设置路径本身所需的管理权限。另一种方法可能是简单地右键单击安装程序并选择以管理员身份运行,然后修复安装。如果这仍然不起作用,请选择下面与您的 python 版本和安装目录相对应的 [Environment] 答案。 – MaxPRafferty 2015 年 11 月 18 日 20:06

        也许让 Python 安装程序自己添加路径是明智的。这里的陷阱是默认情况下 Python 安装程序会 NOT 为您添加路径。在安装过程中您应该仔细查看(通过向下滚动查看已安装的内容),而不是直接nexting 到最后。

        他想念的是,一旦你安装了它,你就不能run as administrator。卸载并重新安装可能会,但最简单的是右键单击和Troubleshoot compatibility,这次要小心在点击next之前检查“要安装的内容”对话框中的“添加路径”。然后重启powershell。瞧。它对我有用。

        【讨论】:

          【解决方案11】:

          有时您在 Windows 上安装 Python,但它没有正确配置路径。

          确保输入[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
          在 PowerShell 中正确配置它。

          您还必须重新启动 PowerShell 或您的整个计算机才能真正修复它。

          【讨论】:

          • 重新启动我的 Windows 10 计算机对我来说效果很好。谢谢!!
          【解决方案12】:

          为了能够在不重新启动 shell 窗口的情况下立即使用 Python,您需要更改机器、进程和用户的路径。

          Function Get-EnvVariableNameList {
              [cmdletbinding()]
              $allEnvVars = Get-ChildItem Env:
              $allEnvNamesArray = $allEnvVars.Name
              $pathEnvNamesList = New-Object System.Collections.ArrayList
              $pathEnvNamesList.AddRange($allEnvNamesArray)
              return ,$pathEnvNamesList
          }
          
          Function Add-EnvVarIfNotPresent {
          Param (
          [string]$variableNameToAdd,
          [string]$variableValueToAdd
             ) 
              $nameList = Get-EnvVariableNameList
              $alreadyPresentCount = ($nameList | Where{$_ -like $variableNameToAdd}).Count
              #$message = ''
              if ($alreadyPresentCount -eq 0)
              {
              [System.Environment]::SetEnvironmentVariable($variableNameToAdd, $variableValueToAdd, [System.EnvironmentVariableTarget]::Machine)
              [System.Environment]::SetEnvironmentVariable($variableNameToAdd, $variableValueToAdd, [System.EnvironmentVariableTarget]::Process)
              [System.Environment]::SetEnvironmentVariable($variableNameToAdd, $variableValueToAdd, [System.EnvironmentVariableTarget]::User)
                  $message = "Enviromental variable added to machine, process and user to include $variableNameToAdd"
              }
              else
              {
                  $message = 'Environmental variable already exists. Consider using a different function to modify it'
              }
              Write-Information $message
          }
          
          
          Function Get-EnvExtensionList {
              $pathExtArray =  ($env:PATHEXT).Split("{;}")
              $pathExtList = New-Object System.Collections.ArrayList
              $pathExtList.AddRange($pathExtArray)
              return ,$pathExtList
          }
          
          
          Function Add-EnvExtension {
          Param (
          [string]$pathExtToAdd
             ) 
              $pathList = Get-EnvExtensionList
              $alreadyPresentCount = ($pathList | Where{$_ -like $pathToAdd}).Count
              if ($alreadyPresentCount -eq 0)
              {
                  $pathList.Add($pathExtToAdd)
                  $returnPath = $pathList -join ";"
                  [System.Environment]::SetEnvironmentVariable('pathext', $returnPath, [System.EnvironmentVariableTarget]::Machine)
                  [System.Environment]::SetEnvironmentVariable('pathext', $returnPath, [System.EnvironmentVariableTarget]::Process)
                  [System.Environment]::SetEnvironmentVariable('pathext', $returnPath, [System.EnvironmentVariableTarget]::User)
                  $message = "Path extension added to machine, process and user paths to include $pathExtToAdd"
              }
              else
              {
                  $message = 'Path extension already exists'
              }
              Write-Information $message
          }
          
          Function Get-EnvPathList {
              [cmdletbinding()]
              $pathArray =  ($env:PATH).Split("{;}")
              $pathList = New-Object System.Collections.ArrayList
              $pathList.AddRange($pathArray)
              return ,$pathList
          }
          
          Function Add-EnvPath {
          Param (
          [string]$pathToAdd
             ) 
              $pathList = Get-EnvPathList
              $alreadyPresentCount = ($pathList | Where{$_ -like $pathToAdd}).Count
              if ($alreadyPresentCount -eq 0)
              {
                  $pathList.Add($pathToAdd)
                  $returnPath = $pathList -join ";"
                  [System.Environment]::SetEnvironmentVariable('path', $returnPath, [System.EnvironmentVariableTarget]::Machine)
                  [System.Environment]::SetEnvironmentVariable('path', $returnPath, [System.EnvironmentVariableTarget]::Process)
                  [System.Environment]::SetEnvironmentVariable('path', $returnPath, [System.EnvironmentVariableTarget]::User)
                  $message = "Path added to machine, process and user paths to include $pathToAdd"
              }
              else
              {
                  $message = 'Path already exists'
              }
              Write-Information $message
          }
          
          Add-EnvExtension '.PY'
          Add-EnvExtension '.PYW'
          Add-EnvPath 'C:\Python27\'
          

          【讨论】:

            【解决方案13】:
            1. 下载Nodejs for windows
            2. 安装node-vxxx.msi
            3. 找到“为 Node.js 安装其他工具”脚本
            4. 打开并安装它
            5. 重新打开一个新的shell提示符,输入“python”>>按“enter”>>它可以工作了!!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-05-27
              • 2021-10-02
              • 2013-12-24
              • 1970-01-01
              • 2020-09-24
              • 1970-01-01
              • 1970-01-01
              • 2023-01-11
              相关资源
              最近更新 更多