tmux 混淆了 pipenv 会话

tmux confuses pipenv sessions

我正在集中使用 pipenv (Python) 和 tmux。我的每个项目都有自己的 pipenv 环境,我喜欢在这个环境中启动 tmux,例如,运行 执行以下命令:

pipenv run tmux

这适用于我 运行 这个命令的第一个项目。但是一旦我 运行 它用于第二个项目(而第一个 tmux 会话仍然处于活动状态),第二个 tmux 会话中的新窗格将从第一个 tmux 会话的 pipenv 环境开始。

准确地说:第二个 tmux 会话的初始窗格不会出现问题,但只会在我打开新窗格时出现。

有什么想法吗?

全局环境是在 tmux 服务器启动时设置的,用于所有窗格,大概 pipenv 需要一些东西在环境中有所不同。您将需要弄清楚它期望设置什么。

那么你有几个选择:

  • 使用-L使用不同的tmux服务器而不是不同的tmux会话,所以每个都有启动的环境。然而,您最终可能会得到许多 tmux 服务器。

  • pipenv 需要的任何内容放入 tmux update-environment 选项中,以便在创建会话时将其复制到会话环境中。请注意,它也会在附加时被复制(但显然这只会影响附加后创建的窗格)。

  • 在新面板中自行配置 tmux 内部环境,具体操作方式取决于 pipenv 可用的功能。我不知道。如果它只是一个环境变量,那可能会很容易。

new-windowsplit-window 有一个 -e 标志来显式设置环境变量,但不幸的是,它也从未扩展到 new-session。你仍然可以用 -e 制作第二个 window 然后杀死第一个 window.