我已经安装了virtualenvwrapper-win,当我尝试此命令时

workon <envname>

在CMD中它可以工作,但在Windows PowerShell中不起作用。

在Windows PowerShell中,我必须执行Scripts\activate.ps1,然后在提示之前获得envname。

您能否让我知道如何在PowerShell中使用workon命令?

最佳答案

workon是批处理脚本。如果从PowerShell运行它,它将在一个新的CMD子进程中启动,在那里执行它的操作,然后退出并返回到PowerShell提示符。由于子进程无法修改其父进程,因此当您返回PowerShell时,将丢失workon.bat所做的所有修改。

您基本上有两个选择:

  • 在PowerShell中重写workon.bat(及其调用的其他批处理脚本)。
  • 在不退出CMD子进程的情况下运行workon.bat:
    & cmd /k workon <envname>
    

    如果只需要可以从PowerShell直接调用的快捷方式workon,则可以将该命令行包装在函数中,然后将函数定义放入PowerShell配置文件中:
    function workon($environment) {
      & cmd /k workon.bat $environment
    }
    

    在此处使用带有扩展名的脚本名可避免无限递归。
  • 关于python-3.x - workon命令在Windows PowerShell中不起作用以激活virtualenv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38944525/

    10-12 19:14