workon 命令在 Windows PowerShell 中无法激活 virtualenv

新手上路,请多包涵

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

workon <envname>

它在 CMD 中有效,但在 Windows PowerShell 中无效。

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

您能否告诉我如何使 workon 命令在 PowerShell 中运行?

原文由 Raj 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

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
  }

在此处使用带扩展名的脚本名以避免无限递归。

原文由 Ansgar Wiechers 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进