virtualenv в PowerShell?
-
21-09-2019 - |
Вопрос
Привет, коллеги-питонисты, похоже, возникает проблема, когда virtualenv ( виртуальная среда ) используется в PowerShell.
Когда я пытаюсь активировать свою среду в PowerShell, например..
> env/скрипты/активировать
..ничего не происходит.(приглашение командной строки должно было измениться так же, как и ПУТЬ env.переменная .)
Я предполагаю, что проблема в том, что PowerShell порождает новый cmd.процесс только для запуска activate.bat, таким образом, делая изменения, которые activate.bat вносит в оболочку, мертвыми после ее завершения.
Есть ли у вас какие-либо обходные пути решения этой проблемы?(Я придерживаюсь cmd.exe на данный момент)
Решение
Обновить: Приведенный ниже ответ устарел.Теперь просто используйте activate.ps1
(вместо того , чтобы activate.bat
) для активации из среды Powershell.
Здесьэто сообщение, содержащее сценарий Powershell, который позволяет вам запускать пакетные файлы, которые постоянно изменяют свои переменные среды.Скрипт передает любые изменения переменной среды обратно в вызывающую среду PowerShell.
Другие советы
Последняя версия virtualenv поддерживает PowerShell "из коробки".
Просто убедись, что ты бежишь:
Scripts\activate.ps1
вместо того , чтобы
Scripts\activate
Последний выполнит activate.bat
, который не работает в PowerShell.
Быстрым решением было бы вызвать cmd, а затем запустить activate.bat из сеанса 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>
попробуй это:. .\env\Scripts\activate.ps1
следите за точками и пробелами
Эта ошибка возникает из-за меры безопасности, которая не позволяет выполнять скрипты в вашей системе без вашего одобрения.Вы можете сделать это, открыв powershell с правами администратора (найдите powershell в главном меню и выберите Запуск от имени администратора в контекстном меню) и введя:
set-executionpolicy удаленный дизайн
для большего: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 Unrestricted
3) Повторно запустите команду активации: . .\env\Scripts\activate.ps1
Я написал этот быстрый небольшой скрипт для обработки моей активации и запуска сервера разработки.
$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"
}
Наслаждайся.
Пользователи Windows
В Powershell:
- Запустите Powershell от имени администратора
- скопируйте и вставьте эту команду:
set-executionpolicy remotesigned
- Соглашайтесь с сообщением.
Наконец, Беги
your_virtualenv_name\Scripts\activate.ps1
Вместо того , чтобы
your_virtualenv_name\Scripts\activate.bat
В CMD Просто запустите:
your_virtualenv_name\Scripts\activate.bat