virtualenv в PowerShell?

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

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

> env / scripts / activ

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

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

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

19 ответов

Решение

Обновление: ответ ниже устарел. Теперь просто используйте activate.ps1 (скорее, чем activate.bat) для активации из среды Powershell.

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

Последняя версия virtualenv поддерживает PowerShell "из коробки".

Просто убедитесь, что вы запускаете:

Scripts\activate.ps1

вместо

Scripts\activate

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

Быстрый обходной путь - вызвать 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>

Просто беги первым

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force

а потом

./env/Scripts/activate.sp1

Вот и все

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

. .\env\Scripts\activate.ps1

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

Сделать это:

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

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

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

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

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

set-executepolicy remotesigned

для получения дополнительной информации: http://www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/

Пользователи Windows

В Powershell:

  1. Запустите Powershell от имени администратора
  2. скопируйте и вставьте эту команду: set-executionpolicy remotesigned
  3. Согласитесь на сообщение.

Наконец, беги

your_virtualenv_name\Scripts\activate.ps1

Вместо

your_virtualenv_name\Scripts\activate.bat

В CMD просто запустите:

your_virtualenv_name\Scripts\activate.bat

У меня тоже была эта проблема! и наконец выяснили, что делать в windows...

хорошо, выполните следующие действия:

1) Введите powershell в строке поиска Windows, затем щелкните ее правой кнопкой мыши и выберите Запуск от имени администратора.

(если у вас есть проблемы, проверьте это)

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

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

(просто выполните точную команду! Будьте осторожны с именем вашей среды.)

и это все!:)

В Windows PowerShell мне нужно ввести из папки venv/Scripts:

. ./activate

во-первых, убедитесь, что вам разрешено запускать скрипты. Если нет, активируйте его. Теперь откройте команду powershell pip install virtualenv (если virtualenv не установлен в вашей системе) python -m virtualenv myenv (здесь «myenv» - это имя вашей среды)

# активация созданной вами виртуальной среды: myenv / 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.

Я написал небольшой скрипт для его активации.

# 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 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

Чтобы решить эту проблему, вы можете сделать следующее:

  1. Перейти к настройкам Windows
  2. Открыть обновление и безопасность
  3. Выберите «Для разработчиков»
  4. Включите режим разработчиков
  5. принять все условия

Спасибо вам всего наилучшего

Для тех, кто все еще пытается наладить работу, Windows PowerShell по умолчанию не загружает команды из текущего местоположения. Если вы перейдете в папку activate.ps1, запустите activate.ps1 может вернуть «Термин« активировать »не распознается как имя командлета».

Чтобы запустить activate.ps1 из текущего местоположения, попробуйте:

      .\activate.ps1
  1. Поиск в Windows Powershell
  2. Щелкните правой кнопкой мыши, выберите «Запуск от имени администратора»; подтвердите всплывающее окно безопасности, если необходимо
  3. Войти: Set-ExecutionPolicy Unrestricted Войти: A
  4. cd.\env\Scripts\activate

Нет windows 10.CMDvirtualenv venv/Script/activate.bat

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

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

}

Наслаждаться.

У меня была аналогичная проблема. Пробовал разные способы. Политика исполнения также была изменена. Ничего не получилось. Дело в том, что мне пришлось удалить двойные кавычки, заключающие путь к Activate.ps1.

Другие вопросы по тегам