【问题标题】:virtualenvwrapper: when does `workon` changes to the project directory?virtualenvwrapper:“workon”何时更改为项目目录?
【发布时间】:2017-04-26 02:12:40
【问题描述】:

我使用virtualenvwrapper 来管理我的环境。我使用-a <path-to-project> 参数创建我的项目,并且未设置PROJECT_HOME,因为我的项目不共享公共路径。 VIRTUALENVWRAPPER_WORKON_CD 设置为 1,并且虚拟环境中存在有效的 .project 文件。

当我使用workon 命令时,它只会将工作目录更改为项目的路径有时,而在其他时候,尽管环境已正确激活,但目录保持不变.

那么目录何时以及如何通过workon 发生变化?我需要做什么/设置它才能工作吗?

【问题讨论】:

  • 你有没有试过在激活项目后在你想cd到的目录中运行命令setvirtualenvproject?
  • 是的,试过了。并且还验证了.project 文件包含正确的路径。
  • 这发生在我关闭终端并重新打开它之后。似乎 virtualenvwrapper 没有保存配置

标签: python virtualenv virtualenvwrapper virtual-environment


【解决方案1】:

setvirtualenvproject 现在称为setprojectdir。使用当前目录写setprojectdir .

【讨论】:

  • 不在我的 virtualenvwrapper 版本中($ pip show virtualenvwrapper 名称:virtualenvwrapper 版本:4.8.4)
【解决方案2】:

我有一个小解决方案,虽然有点老套

  1. 转到此变量$VIRTUALENVWRAPPER_HOOK_DIR 指向的文件夹。您可能需要在虚拟环境中才能看到该变量,但通常它与$WORKON_HOME 具有相同的值
  2. 在此文件夹中,您应该会看到一个名为 postactivate 的脚本
  3. 将此添加为脚本的最后一行:cdproject

现在这样做是每次你输入workon <project_name>,这个脚本会在虚拟环境激活后运行,你工作的目录会切换到那个项目的目录。

有关更多生命周期挂钩,请参阅here

注意

我没有对此进行全面测试以确保无论项目如何创建都能正常工作,但为了确保它正常工作,我建议使用 mkvirtualenv -a <env_name> 或如果环境存在并使用环境已激活,转到它的项目文件夹并运行setvirtualenvproject 现在,当您下次尝试执行 workon ... 时,脚本将启动并带您进入项目文件夹

附录

因为这是一个 shell 脚本,你可以做一些花哨的调整,而不仅仅是那一行。例如,您可能只想在激活的项目具有特定模式或特定项目组的一部分时才执行某些操作。查看一些$VIRTUALENVWRAPPER_* 变量,看看您可以获得哪些其他有用信息

【讨论】:

  • 这行得通。但是,我不明白为什么它有时会自动执行此操作,而我从未设置过钩子?看不到图案。
猜你喜欢
  • 2016-11-26
  • 2013-08-23
  • 1970-01-01
  • 2016-11-01
  • 2021-06-13
  • 1970-01-01
  • 2016-07-29
  • 2017-01-07
  • 1970-01-01
相关资源
最近更新 更多