【发布时间】:2015-11-04 21:30:32
【问题描述】:
我有一个 bash 脚本,每当hg update 发生时,我都会尝试执行该脚本。这个 bash 脚本的目标是切换到正确的 virtualenv。为简单起见,此脚本称为.test - 如下所示:
#!/bin/bash
echo 'testing hg update hook'
source ~/.virtualenvs/myvirtualenv/bin/activate
每当我使用 source .test 从我的 shell 调用这个脚本时,一切都正常工作;我可以看到 echo 的结果,并且我的 shell 更改以反映激活的 virtualenv
但是,当我执行hg update 时,virtualenv 没有被激活。脚本正在触发,因为我可以看到回显结果;但是,我的 shell 没有更新以反映激活的 virtualenv。下面是我的.hg/hgrc 文件中的挂钩设置。任何想法为什么我的 virtualenv 没有在这个钩子中被激活?
[hooks]
# Update to the correct virtualenv when switching branches (hg update branchname)
update = source .test
更新 1: 根据 answer,我不相信 hg update 钩子在我当前的 shell 中触发;这就是为什么当我手动运行脚本但从钩子失败时 virtualenv 激活的原因
【问题讨论】:
-
您希望在哪里激活 virtualenv?它只会在似乎没有做任何事情的子shell期间处于活动状态。
-
嗯,这似乎更棘手。不确定是否有令人满意的解决方案。在我对您的另一个问题的回答中,我不认为 virtualenv 仅对生成它的 shell 是瞬态的。您的 IDE 是否具有允许修改/与其提供的 shell 交互的 API? stackoverflow.com/questions/13122137/… 可能有一些半答案和帮助
标签: python bash mercurial virtualenv