我试图在powershell中使用python

时间:2012-08-05 02:05:32

标签: python powershell python-2.7

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

13 个答案:

答案 0 :(得分:79)

尝试以这种方式设置路径:

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

答案 1 :(得分:20)

对于什么是值得的,这个命令为我做了(Python3.3):

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

之后我不得不重新启动Powershell。

答案 2 :(得分:18)

$env:path="$env:Path;C:\Python27"只会为当前会话设置它。下次打开Powershell时,你将不得不再次做同样的事情。

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

答案 3 :(得分:8)

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

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

答案 4 :(得分:7)

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

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

    ; C:\ python27 \; C:\ python27 \脚本

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

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

答案 5 :(得分:4)

这对我来说永久有效:

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

答案 6 :(得分:3)

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

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

您还必须重新启动PowerShell或整个计算机才能使其真正得到修复。

答案 7 :(得分:2)

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

答案 8 :(得分:1)

以这种方式尝试命令:

PS C:\Users\XXX>python.exe

而不是:

C:\Users\XXX>python

答案 9 :(得分:0)

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

答案 10 :(得分:0)

作为MaxPRafferty mentioned

  

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

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

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

答案 11 :(得分:0)

要在不重新启动外壳窗口的情况下立即使用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\'

答案 12 :(得分:0)

  1. 下载Nodejs for Windows
  2. 安装node-vxxx.msi
  3. 找到“为Node.js安装其他工具”脚本
  4. 打开并安装
  5. 重新打开一个新的shell提示符,键入“ python” >>按“ enter” >>可行!