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)

21
demandé sur utku_karatas 2009-09-02 03:03:59

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.

9
répondu Vinay Sajip 2009-09-01 23:15:02

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.

55
répondu jsalonen 2012-05-04 10:54:47

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>
14
répondu elliott 2010-10-13 19:52:47

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/

3
répondu sanfirat 2016-01-07 09:21:17

Essayez ceci: . .\env\Scripts\activate.ps1 regarder les points et les espaces

2
répondu liuyihe 2015-04-28 11:41:41

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

2
répondu zhijazi 2018-04-21 17:56:31

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.

0
répondu Jaberwocky 2017-08-08 15:19:18