virtualenv в PowerShell?



Привет, друзья питонисты, кажется, есть проблема, когдаvirtualenv используется в PowerShell.



Когда я пытаюсь активировать свою среду в PowerShell, как..



> env / scripts / activate



.. ничего не происходит. (приглашение оболочки должно было измениться, а также путь env. переменная.)



Я думаю, проблема в том, что PowerShell порождает новый cmd. процесс только для запуска активации.летучая мышь, таким образом, делает изменения активными.летучая мышь делает с панцирем мертвеца после того, как она завершается.



Есть ли у вас какие-либо обходные пути для этой проблемы? (Я придерживаюсь cmd.exe на данный момент)

614   7  

7 ответов:

Здесь сообщение, содержащее скрипт Powershell, который позволяет запускать пакетные файлы, которые постоянно изменяют свои переменные среды. Сценарий распространяет любые изменения переменных среды обратно в вызывающую среду PowerShell.

Последняя версия virtualenv поддерживает PowerShell out-of-the-box.

Просто убедитесь, что вы бежите:

Scripts\activate.ps1

Вместо

Scripts\activate

Последний будет выполнять activate.bat, что не работает в PowerShell.

Быстрый обходной путь-вызвать cmd, а затем запустить activate.летучая мышь из сеанса cmd. Например:

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>

Эта ошибка происходит из-за меры безопасности, которая не позволит скриптам выполняться в вашей системе без вашего одобрения. Это можно сделать, открыв powershell с правами администратора (найдите powershell в главном меню и выберите пункт Выполнить от имени администратора в контекстном меню) и введя:

Set-executionpolicy remotesigned

Для больше: http://www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/

Попробуйте это: . .\env\Scripts\activate.ps1 смотрите точки и пробелы

В каталоге Scripts папки virtual environments имеется несколько сценариев активации, которые можно использовать в зависимости от того, где выполняется команда. Если вы пытаетесь активировать виртуальную env из Windows PowerShell, попробуйте использовать следующую команду:

. .\env\Scripts\activate.ps1

В случае, если вы получите сообщение об ошибке о том, что сценарий активации отключен в вашей системе, вам сначала нужно будет вызвать изменение политики выполнения в вашей системе. Для этого понадобится будет сделано как администратор.

Для этого:

1) Щелкните правой кнопкой мыши приложение PowerShell и выберите Запуск от имени администратора

2) выполните следующую команду: Set-ExecutionPolicy Unrestricted

3) повторите команду активации: . .\env\Scripts\activate.ps1

Я написал этот быстрый маленький скрипт для обработки моей активации и запуска сервера dev.

$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"

}

Наслаждайтесь.

Comments

    Ничего не найдено.