virtualenv в PowerShell?
Привет, друзья питонисты, кажется, есть проблема, когдаvirtualenv используется в PowerShell.
Когда я пытаюсь активировать свою среду в PowerShell, как..
> env / scripts / activate
.. ничего не происходит. (приглашение оболочки должно было измениться, а также путь env. переменная.)
Я думаю, проблема в том, что PowerShell порождает новый cmd. процесс только для запуска активации.летучая мышь, таким образом, делает изменения активными.летучая мышь делает с панцирем мертвеца после того, как она завершается.
Есть ли у вас какие-либо обходные пути для этой проблемы? (Я придерживаюсь cmd.exe на данный момент)
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/
В каталоге Scripts папки virtual environments имеется несколько сценариев активации, которые можно использовать в зависимости от того, где выполняется команда. Если вы пытаетесь активировать виртуальную env из Windows PowerShell, попробуйте использовать следующую команду:
. .\env\Scripts\activate.ps1В случае, если вы получите сообщение об ошибке о том, что сценарий активации отключен в вашей системе, вам сначала нужно будет вызвать изменение политики выполнения в вашей системе. Для этого понадобится будет сделано как администратор.
Для этого:
1) Щелкните правой кнопкой мыши приложение PowerShell и выберите Запуск от имени администратора
2) выполните следующую команду:
Set-ExecutionPolicy Unrestricted3) повторите команду активации:
. .\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