簡體   English   中英

我正在嘗試在 powershell 中使用 python

[英]I'm trying to use python in powershell

我正在嘗試按照 Zed Shaw 的指南學習 Python 艱難之路。 我需要在 Powershell 中使用 python。我在C:\Python27中安裝了 Python 2.7.3。 每當我在 Powershell 中鍵入 python 時,我都會收到一條錯誤消息,指出術語“python”未被識別為 cmdlet、function、腳本文件或可運行程序的名稱。 我還輸入了這個: [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")這是提供的建議解決方案,但是在 Powershell 中輸入 python 仍然沒有任何作用。 我可以輸入“啟動 python”,它會打開一個 window 和 python,但我需要它在 Powershell。謝謝。

嘗試以這種方式設置路徑:

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

值得一提的是,這個命令為我做了 (Python3.3):

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

之后我只需要重新啟動 Powershell。

$env:path="$env:Path;C:\Python27"只會為當前會話設置它。 下次打開 Powershell 時,您將不得不再次執行相同的操作。

[Environment]::SetEnvironmentVariable()是正確的方法,它會永久設置您的 PATH 環境變量。 在這種情況下,您只需再次啟動 Powershell 即可查看效果。

目錄設置不正確,因此請按照以下步驟操作。

  1. “我的電腦”>右鍵單擊>屬性>“系統屬性”>“高級”選項卡
  2. “環境變量”>“路徑”>“編輯”
  3. 在“變量值”框中,確保您看到以下內容:

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

  4. 單擊“確定”,通過重新啟動 windows powershell 來測試此更改。 類型

    Python

  5. 現在 python 版本 2 運行了! 耶!

對於永久解決方案,我發現以下方法有效:

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

這對我永久有效:

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

Python Guide中,這對我有用(Python 2.7.9): [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27\;C:\Python27\Scripts\", "User")

有時您在 Windows 上安裝 Python,但它沒有正確配置路徑。

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

您還必須重新啟動 PowerShell 或您的整個計算機才能真正修復它。

以這種方式嘗試命令:

PS C:\Users\XXX>python.exe

代替:

C:\Users\XXX>python

正如MaxPRafferty 提到的

請注意任何從谷歌登陸這里的人,答案設置路徑都是正確的,但這個問題可能源於沒有給 python 安裝程序管理權限,它需要設置路徑本身。 另一種方法可能是簡單地右鍵單擊安裝程序並選擇以管理員身份運行,然后修復安裝。 如果仍然不起作用,請選擇下面與您的 python 版本和安裝目錄相對應的 [Environment] 答案。 – MaxPRafferty 15 年 11 月 18 日 20:06

也許讓 Python 安裝程序自己添加路徑是明智的。 這里的陷阱是默認情況下 Python 安裝程序不會為您添加路徑。 安裝過程中應該仔細查看(通過向下滾動查看已安裝的內容),而不是直接next到最后。

他沒有說的是,一旦你安裝了它,你就不能run as administrator 卸載並重新安裝可能會,但最簡單的是右鍵單擊並Troubleshoot compatibility問題,這次要小心,在點擊next之前檢查“要安裝的內容”對話框中的“添加路徑”。 然后重啟powershell。 瞧。 這個對我有用。

為了能夠在不重新啟動 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\'

只需刪除“用戶”一詞。 它會起作用。

  1. 下載適用於 Windows 的Nodejs
  2. 安裝 node-vxxx.msi
  3. 找到“為 Node.js 安裝附加工具”腳本
  4. 打開並安裝它
  5. 重新打開一個新的 shell 提示符,鍵入“python”>> 按“enter”>> 它起作用了!!

對於 python 3.3以上的版本,使用pyton命令不再是最佳選擇,並且可能會導致意外事件,例如打開 Windows Store。

預期的方法是使用 python 啟動器,它默認隨官方安裝一起提供(並且可能已經安裝在您的系統上)。 在之前使用python的地方使用簡單的py命令。 更多細節在這里

例如,
要檢查啟動器是否存在以及安裝了它找到的 python 版本: py -0p --list-paths
運行腳本: py -3. main.py py -3. main.py或者簡單py main.py
按照這個問題中的要求直接在 powershell 中使用: py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM