使用 activate.ps1 脚本而不是 activate.bat 和 virtualenvwrapper
Use activate.ps1 script instead of activate.bat with virtualenvwrapper
我正在尝试在 Windows 中设置我的开发环境(我知道..我知道..)。 Cmder 使用 PowerShell 并使其更加舒适。然而 Virtualenv 仍然有点麻烦,virtualenvwrapper 据说可以让它更容易一些。
但是,virtualenvwrapper 在其 workon.bat
命令中使用了 activate.bat
,PowerShell 存在一些问题。自从 1.7.1 (2012-02-16)
以来,virtualenv 支持开箱即用的 Powershell 并提供了自己的 activate.ps1
脚本,该脚本运行良好,我想改用它。
workon.bat
中的相关部分:
if not exist "%WORKON_HOME%\%VENV%\Scripts\activate.bat" (
echo.
echo. %WORKON_HOME%\%VENV%
echo. doesn't contain a virtualenv ^(yet^).
echo. Create it with "mkvirtualenv %VENV%"
goto END
)
call "%WORKON_HOME%\%VENV%\Scripts\activate.bat"
if defined WORKON_OLDTITLE (
title %1 ^(VirtualEnv^)
)
简单地将 activate.bat
替换为 activate.ps1
是行不通的(根据设置的默认程序打开一个新的 shell 或我的编辑器)而且我从来没有批量做过任何事情,这就是我卡住的原因。
基本上,你只需要
& "$env:WORKON_HOME$env:VENV\Scripts\activate.ps1"
假设 activate.ps1
与 activate.bat
在同一文件夹中。其他批处理命令仅用于在 activate.bat
不存在时显示一些帮助文本,以及用于更改 window 标题。如果你也想在 PowerShell 中使用后者,你可以这样做 like this:
if ($env:WORKON_OLDTITLE) {
$host.ui.RawUI.WindowTitle = $args[0] + ' (VirtualEnv)'
}
我正在尝试在 Windows 中设置我的开发环境(我知道..我知道..)。 Cmder 使用 PowerShell 并使其更加舒适。然而 Virtualenv 仍然有点麻烦,virtualenvwrapper 据说可以让它更容易一些。
但是,virtualenvwrapper 在其 workon.bat
命令中使用了 activate.bat
,PowerShell 存在一些问题。自从 1.7.1 (2012-02-16)
以来,virtualenv 支持开箱即用的 Powershell 并提供了自己的 activate.ps1
脚本,该脚本运行良好,我想改用它。
workon.bat
中的相关部分:
if not exist "%WORKON_HOME%\%VENV%\Scripts\activate.bat" (
echo.
echo. %WORKON_HOME%\%VENV%
echo. doesn't contain a virtualenv ^(yet^).
echo. Create it with "mkvirtualenv %VENV%"
goto END
)
call "%WORKON_HOME%\%VENV%\Scripts\activate.bat"
if defined WORKON_OLDTITLE (
title %1 ^(VirtualEnv^)
)
简单地将 activate.bat
替换为 activate.ps1
是行不通的(根据设置的默认程序打开一个新的 shell 或我的编辑器)而且我从来没有批量做过任何事情,这就是我卡住的原因。
基本上,你只需要
& "$env:WORKON_HOME$env:VENV\Scripts\activate.ps1"
假设 activate.ps1
与 activate.bat
在同一文件夹中。其他批处理命令仅用于在 activate.bat
不存在时显示一些帮助文本,以及用于更改 window 标题。如果你也想在 PowerShell 中使用后者,你可以这样做 like this:
if ($env:WORKON_OLDTITLE) {
$host.ui.RawUI.WindowTitle = $args[0] + ' (VirtualEnv)'
}