105 votes

Virtualenv dans PowerShell?

Il semble y avoir un problème lorsque virtualenv est utilisé dans PowerShell.

Lorsque j'essaie d'activer mon environnement dans PowerShell comme...

env/scripts/activate

... rien ne se passe. (l'invite de commande aurait dû changer ainsi que la variable d'environnement PATH.)

Je suppose que le problème vient du fait que PowerShell crée un nouveau processus cmd. juste pour exécuter le activate.bat, rendant ainsi les modifications effectuées par activate.bat dans l'invite de commande inefficaces une fois l'exécution terminée.

Avez-vous des solutions de contournement pour ce problème ? (Je reste avec cmd.exe pour le moment)

163voto

jsalonen Points 9651

La dernière version de virtualenv prend en charge PowerShell directement.

Assurez-vous juste d'exécuter :

Scripts\activate.ps1

au lieu de

Scripts\activate

La dernière exécutera activate.bat, qui ne fonctionne pas sur PowerShell.

56voto

Vinay Sajip Points 41286

Ma réponse d'origine est maintenant obsolète. Maintenant, utilisez simplement activate.ps1 (plutôt que activate.bat) pour activer à partir d'un environnement Powershell.


Réponse d'origine:

Voici un article qui contient un script Powershell qui vous permet d'exécuter des fichiers batch qui modifient persistamment leurs variables d'environnement. Le script propage tout changement d'une variable d'environnement vers l'environnement Powershell appelant.

47voto

N.Nonkovic Points 460

Exécutez la commande suivante :

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force

Suivi par :

./env/Scripts/activate.ps1

C'est tout

24voto

elliott Points 11

Un moyen de contourner rapidement le problème serait d'inviter cmd, puis d'exécuter votre activate.bat à partir de la session cmd. Par exemple:

PS C:\my_cool_env\Scripts> cmd
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  Tous droits réservés.

C:\my_cool_env\Scripts>activate.bat
(my_cool_env) C:\my_cool_env\Scripts>

17voto

zhijazi Points 141

Dans le répertoire Scripts de votre dossier d'environnements virtuels, il y a plusieurs scripts d'activation qui peuvent être utilisés en fonction de l'endroit où vous exécutez la commande. Si vous essayez d'activer votre environnement virtuel à partir de Windows PowerShell, essayez d'utiliser la commande suivante :

. .\env\Scripts\activate.ps1

Dans le cas où vous recevez une erreur concernant le script d'activation étant désactivé sur votre système, vous devrez d'abord effectuer un changement de stratégie d'exécution sur votre système. Cela devra être fait en tant qu'administrateur.

Pour ce faire :

1) Cliquez avec le bouton droit sur l'application PowerShell et sélectionnez Exécuter en tant qu'administrateur

2) Exécutez la commande suivante : Set-ExecutionPolicy Unrestricted

3) Rerun the activation command: . .\env\Scripts\activate.ps1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X