virtualenv dans PowerShell?
Salut collègues pythonistas, il semble y avoir un problème lorsque virtualenv est utilisé dans PowerShell.
Quand j'essaie d'activer mon environnement dans PowerShell comme..
> env/scripts/activer
.. rien ne se passe. (l'invite du shell devrait avoir changé ainsi que le chemin env. variable .)
Je suppose que le problème est que PowerShell génère un nouveau cmd. processus juste pour exécuter l'activation.chauve-souris rendant ainsi les changements activent.bat fait à la coquille morte après il se termine.
Avez-vous des solutions de contournement pour le problème? (Je suis coller avec cmd.exe pour l'instant)
7 réponses
Ici est un post qui contient un script Powershell qui vous permet d'exécuter des fichiers batch qui modifient constamment leurs variables d'environnement. Le script propage tout changement de variable d'environnement vers L'environnement PowerShell appelant.
La dernière version de virtualenv prend en charge PowerShell out-of-the-box.
Assurez-vous simplement que vous exécutez:
Scripts\activate.ps1
Au Lieu de
Scripts\activate
Ce dernier exécutera activate.bat
, ce qui ne fonctionne pas sur PowerShell.
Une solution de contournement rapide serait d'appeler cmd, puis d'exécuter votre activate.bat au sein de la session cmd. Par exemple:
PS C:\my_cool_env\Scripts> cmd
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\my_cool_env\Scripts>activate.bat
(my_cool_env) C:\my_cool_env\Scripts>
Cette erreur se produit en raison d'une mesure de sécurité qui ne laissera pas les scripts être exécutés sur votre système sans que vous l'ayez approuvé. Vous pouvez le faire en ouvrant un powershell avec des droits d'administration (recherchez powershell dans le menu principal et sélectionnez Exécuter en tant qu'administrateur dans le menu contextuel) et en entrant:
Set-executionpolicy remotesigned
Pour plus: http://www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/
Essayez ceci:
. .\env\Scripts\activate.ps1
regarder les points et les espaces
Dans le répertoire Scripts de votre dossier virtual environments, plusieurs scripts d'activation 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
Si vous recevez une erreur concernant la désactivation du script d'activation sur votre système, vous devez d'abord appeler une modification de stratégie d'exécution sur votre système. Il faudra pour cela à faire en tant qu'administrateur.
Pour ce faire:
1) Faites un clic droit sur L'application PowerShell et sélectionnez Exécuter en tant Qu'administrateur
2) Exécutez la commande suivante: Set-ExecutionPolicy Unrestricted
3) réexécutez la commande d'activation: . .\env\Scripts\activate.ps1
J'ai écrit ce petit script rapide pour gérer mon activation et le démarrage d'un serveur de développement.
$ep = Get-ExecutionPolicy
if ($ep -eq 'RemoteSigned') {
$root = "C:\Users\ALeven\OneDrive\!code_projects\!django_projects\"
$test = Read-Host -Prompt 'Would you like to activate the python environment? y/n'
if ($test -eq 'y') {
$activatestr = ($root + "\work_venv\Scripts\Activate.ps1")
& $activatestr
}
$test = Read-Host -Prompt 'Would you like to run the python server? y/n'
if ($test -eq 'y') {
$whichserver = Read-Host -Prompt 'Enter the name of the project.'
$path = ($root + $whichserver)
$runserverstr = ($path + "\manage.py")
python.exe $runserverstr runserver
}
} else {
Write-host "Execution Policy does not allow this script to run properly"
Write-host "If you have the proper permissions,"
Write-Host "Please close powershell,"
Write-host "then right click the powershell icon and run as administrator"
Write-host "Once in the powershell environment, execute the following:"
Write-host "Set-ExecutionPolicy RemoteSigned -Force"
}
Profitez.