Вопрос

Привет, коллеги-питонисты, похоже, возникает проблема, когда 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:

  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top