virtualenv в PowerShell?
Привет, коллеги-питонисты, похоже, что проблема возникает при использовании virtualenv в PowerShell.
Когда я пытаюсь активировать свою среду в PowerShell, как...
> env / scripts / activ
.. Ничего не произошло. (приглашение оболочки должно было измениться, а также переменная PATH env.)
Я предполагаю, что проблема в том, что PowerShell создает новый cmd. процесс только для запуска activ.bat, таким образом, делая изменения, которые activ.bat делает с оболочкой мертвой после ее завершения.
Есть ли у вас какие-либо обходные пути для решения проблемы? (Сейчас придерживаюсь cmd.exe)
20 ответов
Обновление: ответ ниже устарел. Теперь просто используйте activate.ps1
(скорее, чем activate.bat
) для активации из среды Powershell.
Вот пост, который содержит скрипт Powershell, который позволяет вам запускать пакетные файлы, которые постоянно изменяют свои переменные окружения. Сценарий распространяет любые изменения переменных среды обратно в вызывающую среду PowerShell.
Последняя версия virtualenv поддерживает PowerShell "из коробки".
Просто убедитесь, что вы запускаете:
Scripts\activate.ps1
вместо
Scripts\activate
Последний выполнит activate.bat
, который не работает на PowerShell.
Просто беги первым
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
а потом
./env/Scripts/activate.sp1
Вот и все
Быстрый обходной путь - вызвать cmd, а затем запустить ваш activ.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>
Внутри каталога Scripts вашей папки виртуальных сред есть несколько сценариев активации, которые можно использовать в зависимости от того, где вы выполняете команду. Если вы пытаетесь активировать виртуальный env из Windows PowerShell, попробуйте использовать следующую команду:
. .\env\Scripts\activate.ps1
В случае, если вы получите ошибку об отключении сценария активации в вашей системе, вам сначала нужно будет вызвать изменение политики выполнения в вашей системе. Это нужно будет сделать как администратор.
Сделать это:
1) Щелкните правой кнопкой мыши приложение PowerShell и выберите "Запуск от имени администратора".
2) Запустите следующую команду: Set-ExecutionPolicy Unrestricted
3) Повторите команду активации: . .\env\Scripts\activate.ps1
Попробуй это:. .\env\Scripts\activate.ps1
смотреть точки и пробелы
Невозможно загрузить env\Scripts\Activate.ps1, поскольку в этой системе отключено выполнение сценариев.
Политику Set-Execution можно использовать, чтобы разрешить текущему пользователю запускать сценарии, как показано ниже.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
После этого пробега...
env/Scripts/Activate.ps1
Пользователи 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
Эта ошибка возникает из-за меры безопасности, которая не позволяет выполнять сценарии в вашей системе без вашего разрешения. Это можно сделать, открыв PowerShell с правами администратора (найдите PowerShell в главном меню и выберите "Запуск от имени администратора" из контекстного меню) и введите:
set-executepolicy remotesigned
для получения дополнительной информации: http://www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/
В Windows PowerShell мне нужно ввести из папки venv/Scripts:
. ./activate
во-первых, убедитесь, что вам разрешено запускать скрипты. Если нет, активируйте его. Теперь откройте команду powershell pip install virtualenv (если virtualenv не установлен в вашей системе) python -m virtualenv myenv (здесь «myenv» - это имя вашей среды)
# активация созданной вами виртуальной среды: myenv / Scripts/Activate.ps1
# деактивация виртуальной среды: деактивировать
У меня тоже была эта проблема! и наконец выяснили, что делать в windows...
хорошо, выполните следующие действия:
1) Введите powershell в строке поиска Windows, затем щелкните ее правой кнопкой мыши и выберите Запуск от имени администратора.
(если у вас есть проблемы, проверьте это)
2) Выполните следующую команду в PowerShell: Set-ExecutionPolicy Unrestricted
3) Повторите команду активации:.\\env\Scripts\activate.ps1
(просто выполните точную команду! Будьте осторожны с именем вашей среды.)
и это все!:)
Еще 2 предложения:
Поскольку всегда проблематично ослабить политику безопасности, я бы посоветовал сделать это минимальным способом для Powershell: вызывать Powershell не как администратор, а как пользователь, который хочет использовать функции virtualenv. Введите "set-Executionpolicy -executionpolicy unrestricted -scope currentuser". Таким образом, политика изменяется только для одного пользователя, а не для всей машины.
Во-вторых, я бы посоветовал скачать с github исходники "regisf / virtualenvwrapper-powershell". После загрузки распакуйте zip-файл в локальную директорию и запустите внутри файл "Install.ps1". Это навсегда расширит профиль Powershell на вашем компьютере и, следовательно, позволит использовать все команды "virtalenvwrapper-win", включая "workon". После этого вы не заметите никакой разницы в поведении Powershell и Commandshell в отношении virtualenv.
Оболочка Windows Power считается более мощной и «заряженной», чем обычная оболочка командной строки. В случае, если вы используете код Visual Studio (VScode), запуск оболочки Power для запуска виртуальной среды Python может вызвать ошибку, особенно в Windows 10, как показано ниже.
\Activate: файл C:\users\titus\django1\Scripts\Activate.ps1 не может быть загружен, поскольку в этой системе отключен запуск скриптов. Дополнительные сведения см. В разделе about_Execution_Policies по адресу https:/go.microsoft.com/fwlink/?LinkID=135170. В строке:1 символ:1
Чтобы решить эту проблему, вы можете сделать следующее:
- Перейти к настройкам Windows
- Открыть обновление и безопасность
- Выберите «Для разработчиков»
- Включите режим разработчиков
- принять все условия
Спасибо вам всего наилучшего
Для тех, кто все еще пытается наладить работу, Windows PowerShell по умолчанию не загружает команды из текущего местоположения. Если вы перейдете в папку activate.ps1, запустите
activate.ps1
может вернуть «Термин« активировать »не распознается как имя командлета».
Чтобы запустить activate.ps1 из текущего местоположения, попробуйте:
.\activate.ps1
У меня была аналогичная проблема. Пробовал разные способы. Политика исполнения также была изменена. Ничего не получилось. Дело в том, что мне пришлось удалить двойные кавычки, заключающие путь к 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"
}
Наслаждаться.
Я написал небольшой скрипт для его активации.
# 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"
Не забудьте сохранить файл с расширением PowerShell .ps1
.
- Поиск в Windows Powershell
- Щелкните правой кнопкой мыши, выберите «Запуск от имени администратора»; подтвердите всплывающее окно безопасности, если необходимо
- Войти:
Set-ExecutionPolicy Unrestricted
Войти:A
-
cd.\env\Scripts\activate