我正在尝试在Powersh中使用python
我正在尝试遵循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中需要它。 谢谢。
12个解决方案
84 votes
尝试通过以下方式设置路径:
$env:path="$env:Path;C:\Python27"
Mike Shepard answered 2020-01-05T18:45:46Z
21 votes
对于什么值,此命令对我有用(Python3.3):
[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:\Python33", "Machine")
之后,我只需要重新启动Powershell。
Matthieu Riegler answered 2020-01-05T18:46:10Z
19 votes
[Environment]::SetEnvironmentVariable()仅将其设置为当前会话。 下次打开Powershell时,您将不得不再次执行相同的操作。
[Environment]::SetEnvironmentVariable()是正确的方法,它将永久设置PATH环境变量。 您只需要再次启动Powershell即可看到这种情况下的效果。
manojlds answered 2020-01-05T18:46:35Z
8 votes
对于永久解决方案,我发现以下工作有效:
[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python 3.5")
Matt answered 2020-01-05T18:46:54Z
8 votes
目录设置不正确,因此请按照以下步骤操作。
“ MyComputer”>右键单击>属性>“系统属性”>“高级”选项卡
“环境变量”>“路径”>“编辑”
在“变量值”框中,确保您看到以下内容:
; c:\ python27 \; c:\ python27 \ scripts
单击“确定”,通过重新启动Windows Powershell来测试此更改。 类型
蟒蛇
现在python版本2运行了! 好极了!
HeggyHere answered 2020-01-05T18:47:45Z
5 votes
这对我永久有效:
[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27","User")
José Manuel Gilpérez answered 2020-01-05T18:48:09Z
4 votes
有时,您在Windows上安装了Python,但它没有正确配置路径。
确保输入[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
在PowerShell中正确配置它。
您还必须重新启动PowerShell或整个计算机才能真正修复它。
answered 2020-01-05T18:48:43Z
2 votes
在Python指南中,这对我有用(Python 2.7.9):[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27\;C:\Python27\Scripts\", "User")
myidealab answered 2020-01-05T18:49:03Z
1 votes
以这种方式尝试命令:
PS C:\Users\XXX>python.exe
代替:
C:\Users\XXX>python
Mao answered 2020-01-05T18:49:27Z
1 votes
为了能够在不重新启动外壳窗口的情况下立即使用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\'
Gaspare Bonventre answered 2020-01-05T18:49:47Z
0 votes
只需删除“用户”一词。 它会工作。
Xshan answered 2020-01-05T18:50:07Z
0 votes
正如MaxPRafferty所述:
只是给所有从google登陆的人的注释,答案设置路径都是正确的,但是这个问题可能是由于没有赋予python安装程序自己设置路径所需的管理权限。 一种替代方法是,只需右键单击安装程序并选择以管理员身份运行,然后修复安装。 如果仍然无法解决问题,请在下面选择与您的python版本和安装目录相对应的[Environment]答案。 – MaxPRafferty 15年11月18日在20:06
让Python安装程序添加路径本身也许是明智的。 这里的陷阱是,默认情况下,Python安装程序不会为您添加路径。 您应该在安装过程中仔细查看(向下滚动以查看已安装的内容),而不要直接将run as administrator拖到最后。
他错过了说的是,一旦安装它就不能run as administrator。 卸载并重新安装也许可以,但是最简单的方法是右键单击和Troubleshoot compatibility,这次要小心,在单击next之前在“安装内容”对话框中检查“添加路径”。然后重新启动powershell。 Voilà。 这个对我有用。
Kangqiao Zhao answered 2020-01-05T18:50:42Z