web-dev-qa-db-fra.com

virtualenv dans PowerShell?

Bonjour chers pythonistas, 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 du shell aurait dû changer ainsi que la variable env. PATH.)

Je suppose que le problème est que PowerShell génère un nouveau cmd. juste pour exécuter le fichier activate.bat, ce qui rend les modifications activées par le shell sur le shell mort une fois terminé.

Avez-vous des solutions à ce problème? (Je m'en tiens à cmd.exe pour l'instant)

36
utku_karatas

Mise à jour: La réponse ci-dessous est obsolète. Maintenant, utilisez simplement activate.ps1 (plutôt que activate.bat) pour activer à partir d'un environnement Powershell.

Ici est un article qui contient un script Powershell qui vous permet d'exécuter des fichiers batch qui modifient constamment leurs variables d'environnement. Le script propage toutes les modifications de variable d'environnement vers l'environnement PowerShell appelant.

18
Vinay Sajip

La dernière version de virtualenv prend en charge PowerShell prêt à l'emploi .

Assurez-vous simplement de lancer:

Scripts\activate.ps1

au lieu de

Scripts\activate

Ce dernier exécutera activate.bat, qui ne fonctionne pas sur PowerShell.

69
jsalonen

Une solution rapide consiste à invoquer cmd, puis à 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.  All rights reserved.

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

À l'intérieur du répertoire Scripts de votre dossier d'environnements virtuels, plusieurs scripts d'activation peuvent être utilisés selon l'endroit où vous exécutez la commande. Si vous essayez d'activer votre env virtuel à partir de Windows PowerShell, essayez d'utiliser la commande suivante:

. .\env\Scripts\activate.ps1

Si vous recevez une erreur indiquant que le script d'activation est désactivé sur votre système, vous devrez d'abord invoquer un changement de stratégie d'exécution sur votre système. Cela devra être fait 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) Relancez la commande d'activation: . .\env\Scripts\activate.ps1

9
zhijazi

essaye ça: . .\env\Scripts\activate.ps1 regarder les points et les espaces

4
Yihe

Cette erreur se produit en raison d'une mesure de sécurité qui ne permet pas l'exécution de scripts sur votre système sans que vous l'ayez approuvé. Vous pouvez le faire en ouvrant un PowerShell avec des droits administratifs (recherchez PowerShell dans le menu principal et sélectionnez Exécuter en tant qu'administrateur dans le menu contextuel) et entrez:

set-executionpolicy remotesigned

pour en savoir plus: http://www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/

4
sanfirat

J'ai écrit un petit script pour l'activer.

# Don't forget to change execution policies
# Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
# More info https://docs.Microsoft.com/en-us/powershell/module/Microsoft.powershell.core/about/about_execution_policies?view=powershell-7

if (Test-Path env:VIRTUAL_ENV) {
    deactivate  
}

$env = .\venv\Scripts\activate.ps1

# use $env to set variables, for instance $env:FLASK_APP = "main.py"

N'oubliez pas d'enregistrer le fichier avec l'extension PowerShell .ps1.

J'ai aussi eu ce problème! et finalement découvert ce que nous devons faire dans les fenêtres ...

ok, suivez ces étapes:

1) Tapez powershell dans la barre de recherche de Windows puis faites un clic droit dessus et sélectionnez Exécuter en tant qu'administrateur

(si vous rencontrez des problèmes lors de cette vérification ceci )

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

3) Relancez la commande d'activation: .\\env\Scripts\activate.ps1

(exécutez simplement la commande exacte! faites attention au nom de votre environnement.)

et c'est tout!:)

0
Amirhossein Safari

J'ai eu un problème similaire. J'ai essayé diverses méthodes. La politique d'exécution a également été modifiée. Rien n'a fonctionné. Le truc, c'est que j'ai dû supprimer les guillemets contenant le chemin d'accès à Activate.ps1.

0
sreagm

Sur Windows PowerShell, je dois taper dans le dossier venv/Scripts:

. ./activate
0
Boxtell

tilisateurs Windows

À Powershell:

  1. Exécutez Powershell en tant qu'administrateur
  2. copiez et collez cette commande: set-executionpolicy remotesigned
  3. Acceptez le message.

Enfin, exécutez

your_virtualenv_name\Scripts\activate.ps1

Au lieu de

your_virtualenv_name\Scripts\activate.bat

Dans CMD Il suffit d'exécuter:

your_virtualenv_name\Scripts\activate.bat
0
user 451

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"

}

Prendre plaisir.

0
Jaberwocky

Courez d'abord

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force

puis

./env/Scripts/activate.sp1

C'est tout

0
N.Nonkovic