【问题标题】:Use activate.ps1 script instead of activate.bat with virtualenvwrapper使用 activate.ps1 脚本而不是带有 virtualenvwrapper 的 activate.bat
【发布时间】:2015-08-28 23:00:18
【问题描述】:

我正在尝试在 Windows 中设置我的开发人员环境(我知道..我知道..)。 Cmder 使用 PowerShell 并使其更加舒适。不过 Virtualenv 还是有点麻烦,virtualenvwrapper 应该让它更容易一些。

但是,virtualenvwrapper 在其workon.bat 命令中使用了activate.bat,这与PowerShell 存在一些问题。由于 virtualenv 自 1.7.1 (2012-02-16) 以来开箱即用地支持 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 或我的编辑器)而且我从来没有批量做过任何事情,这就是我被卡住的原因。

【问题讨论】:

    标签: windows powershell virtualenvwrapper


    【解决方案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)'
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 2012-10-18
      • 2019-10-20
      • 2023-02-11
      • 2011-11-24
      • 2018-09-06
      • 2017-09-10
      • 1970-01-01
      相关资源
      最近更新 更多