使用activate.ps1脚本而不是使用virtualenvwrapper的activate.bat

时间:2015-06-12 20:12:16

标签: windows powershell virtualenvwrapper

我试图在Windows中设置开发人员环境(我知道......我知道..)。 Cmder使用PowerShell并使其更加舒适。然而Virtualenv仍然有点麻烦,virtualenvwrapper据说可以让它更容易一些。

但是,virtualenvwrapper在其activate.bat命令中使用workon.bat,这在PowerShell中存在一些问题。由于virtualenv支持Powershell开箱即用1.7.1 (2012-02-16)并且提供了自己的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或我的编辑器)并且我从未做过任何批处理的事情,这就是为什么我被卡住了。

1 个答案:

答案 0 :(得分:1)

基本上,您只需要

& "$env:WORKON_HOME\$env:VENV\Scripts\activate.ps1"

假设activate.ps1activate.bat位于同一文件夹中。其他批处理命令仅用于在activate.bat不存在时显示某些帮助文本,以及用于更改窗口标题。如果你也想在PowerShell中使用后者,你可以like this

if ($env:WORKON_OLDTITLE) {
  $host.ui.RawUI.WindowTitle = $args[0] + ' (VirtualEnv)'
}