web-dev-qa-db-fra.com

J'essaie d'utiliser Python dans PowerShell

J'essaie de suivre le guide de Zed Shaw sur Learning Python the Hard Way. J'ai besoin d'utiliser Python dans Powershell. J'ai Python 2.7.3 installé dans C:\Python27. Chaque fois que je tape python dans Powershell, le message d'erreur «python» n'est pas reconnu comme nom d'une applet de commande, d'une fonction, d'un fichier de script ou d'un programme utilisable. J'ai aussi tapé ceci: [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User") C'était une solution suggérée, mais taper python dans Powershell ne fait toujours rien. Je peux taper "start python" et cela ouvre une fenêtre avec python mais j'en ai besoin dans Powershell. Merci. 

44
masonc15

Essayez de définir le chemin de cette façon:

 $env:path="$env:Path;C:\Python27"
76
Mike Shepard

Pour ce qui vaut la peine, cette commande l'a fait pour moi (Python3.3): 

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

Je devais simplement redémarrer le Powershell après cela. 

20
Matthieu Riegler

$env:path="$env:Path;C:\Python27" ne le définira que pour la session en cours. La prochaine fois que vous ouvrirez Powershell, vous devrez refaire la même chose.

La [Environment]::SetEnvironmentVariable() est la bonne façon, et elle aurait défini votre variable d'environnement PATH de manière permanente. Il suffit de redémarrer Powershell pour voir l’effet dans ce cas.

18
manojlds

Pour une solution permanente, j’ai trouvé les solutions suivantes:

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

Le répertoire n’est pas configuré correctement, veuillez donc suivre ces étapes.

  1. "MonOrdinateur"> Clic droit> Propriétés> "Propriétés système"> onglet "Avancé"
  2. "Variables d'environnement"> "Chemin"> "Modifier"
  3. Dans la zone "Valeur variable", assurez-vous de voir ce qui suit:

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

  4. Cliquez sur "OK", testez cette modification en redémarrant votre windows powershell. Type 

    python

  5. Maintenant, la version 2 de Python fonctionne! Yay!

5
HeggyHere

Parfois, vous installez Python sous Windows sans que le chemin d'accès ne soit correctement configuré. 

Assurez-vous d'entrer [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
dans PowerShell pour le configurer correctement. 

Vous devez également redémarrer PowerShell ou l’ensemble de votre ordinateur pour le réparer réellement.

3
user2145645

Du Guide Python , voici ce qui a fonctionné pour moi (Python 2.7.9): [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27\;C:\Python27\Scripts\", "User")

2
myidealab

Essayez la commande de cette façon:

PS C:\Users\XXX>python.exe

au lieu de:

C:\Users\XXX>python
1
Mao

Pour pouvoir utiliser Python immédiatement sans redémarrer la fenêtre du shell, vous devez modifier le chemin de la machine, du processus et de l'utilisateur.

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\'
0
Gaspare Bonventre

Il suffit d’éliminer le mot "utilisateur". Ça va marcher.

0
Xshan

Comme MaxPRafferty mentionné :

Juste une note à quiconque atterrit ici depuis Google, le chemin de configuration des réponses est correct, mais ce problème provient probablement du fait qu’il n’a pas donné les droits d’administration du programme d’installation de Python nécessaires pour définir le chemin lui-même. Une alternative peut être simplement de cliquer avec le bouton droit de la souris sur le programme d'installation et de sélectionner Exécuter en tant qu'administrateur, puis réparer l'installation. Si cela ne fonctionne toujours pas, choisissez la réponse [Environnement] ci-dessous qui correspond à votre version de python et à votre répertoire d'installation. - MaxPRafferty 18 novembre 15 à 20:06 

Peut-être est-il sage de laisser l’installateur Python ajouter le chemin lui-même. Le piège ici est que, par défaut, le programme d’installation Python ne PAS ajoute le chemin pour vous. Vous devriez regarder attentivement (en faisant défiler vers le bas pour voir ce qui a été installé) pendant le processus d'installation au lieu de passer directement à nexting jusqu'à la fin.

Ce qu'il a manqué de dire, c'est que vous ne pouvez pas run as administrator une fois que vous l'avez installé. Désinstaller et réinstaller peut s’avérer utile, mais le plus simple est de cliquer avec le bouton droit de la souris et sur Troubleshoot compatibility, en veillant cette fois à vérifier le «chemin d’ajout» dans la boîte de dialogue «qu’installe-t-il à installer» avant de frapper next. Puis redémarrez Powershell. Voilà. Ça marche pour moi.

0
Kangqiao Zhao