将Python虚拟环境与终结器配合使用

Peq*_*que 6 python virtualenv terminator

使用Terminator,用户可以在配置文件中定义布局.通过这些布局,用户可以设置在启动时执行的命令.因此,例如,可以创建一个终端自动执行的布局ls(注意bash避免终端关闭的命令):

command = "ls; bash"
Run Code Online (Sandbox Code Playgroud)

现在,我如何让Terminator加载Python虚拟环境呢?当然,保持bash控制台在加载环境时处于活动状态.

注意

琐碎的方式:

command = "workon my_env; bash"

或其source my_env/bin/activate等价物(不使用virtualenvwrapper),不会工作.

Peq*_*que 7

诀窍是用"一个"命令完成所有事情:bash.趁着它的-i选项(交互),并使用自定义--rcfilePROMPT_COMMAND设置为任何我们想要执行.结果将是这样的:

command = "bash --rcfile <(cat ${HOME}/.bashrc; echo 'export PROMPT_COMMAND="workon my_env; unset PROMPT_COMMAND"') -i"
Run Code Online (Sandbox Code Playgroud)

说明

  • 我们bash以interactive(-i)模式执行.
  • 我们从自定义命令文件(--rcfile)而不是执行命令.bashrc.
  • 使用.bashrc另外一个命令的内容创建此文件.
  • 这个额外的命令导出PROMPT_COMMAND值为"我们想要执行的任何东西".在这种情况下:workon my_env.
  • PROMPT_COMMAND它执行的第一个时间,以避免与壳体的每个交互后多次执行后只是未设置.

只需编辑零件,就可以轻松扩展自定义命令workon my_env.因此,例如,如果ls要从加载虚拟环境自动执行appart,则应编写workon my_env; ls.