将 Python 个虚拟环境与 Terminator 结合使用

Using Python Virtual Environments with Terminator

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

command = "ls; bash"

现在,如何让终结者加载一个 Python 虚拟环境?当然,在加载环境的情况下保持 bash 控制台处于活动状态。

备注

琐碎的方法:

command = "workon my_env; bash"

或其 source my_env/bin/activate 等价物(不使用 virtualenvwrapper),将无法工作。

诀窍是仅使用 "one" 命令即可完成所有操作:bash。利用其 -i 选项(交互式)并使用自定义 --rcfile,其中 PROMPT_COMMAND 设置为我们想要执行的任何内容。结果将是这样的:

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

说明

  • 我们以交互(-i)模式执行bash
  • 我们从自定义命令文件 (--rcfile) 而不是 .bashrc.
  • 执行命令
  • 此文件是用 .bashrc 的内容加上一个命令创建的。
  • 此额外命令导出 PROMPT_COMMAND,值为 "whatever we want to execute"。在这种情况下:workon my_env.
  • PROMPT_COMMAND 在第一次执行后立即取消设置,以避免每次与 shell 交互后多次执行。

只需编辑 workon my_env 部分即可轻松扩展自定义命令。因此,例如,如果您想通过加载虚拟环境自动执行 ls appart,您可以改为编写 workon my_env; ls