如何启动 gnome-terminal 并激活 python 虚拟环境?

如何启动 gnome-terminal 并激活 python 虚拟环境?

我在 Ubuntu 上启动了一个新终端,并希望在打开后激活 Python 虚拟环境。通常通过运行以下命令激活虚拟环境:

source ./environment/bin/activate

我的虚拟环境被称为environment

我用来执行此操作的命令是:

gnome-terminal --geometry 160x80+-26+4 --working-directory=/home/user/Work/project  -x bash -c "source /home/user/Work/project/environment/bin/activate; exec bash"

激活脚本的路径是正确的,但是当我启动终端时虚拟环境并没有被激活。

我怀疑这是因为源在一个 bash 实例中运行,但exec bash为了保持终端打开而创建了一个新的实例(这里只是一个假设)。

我如何才能让source命令影响这个新终端并使其保持打开状态?

答案1

我如何让源命令影响该新终端并使其保持打开状态?

在获取所选文件时启动交互式 shell 的更正确方法是使用语法bash --rcfile ...

该选项将强制 Bash 从而不是--rcfile file读取并执行命令。file~/.bashrc

使用方式如下:

gnome-terminal --geometry 160x80+-26+4 \
--working-directory=/home/user/Work/project \
-- bash --rcfile /home/user/Work/project/environment/bin/activate

你不需要使用-x该选项已弃用,但--在命令前使用。

激活脚本的路径是正确的,但是当我启动终端时虚拟环境并没有被激活。

尽管提示没有显示出来,但您的虚拟环境很可能已经被激活,并且您可以使用例如which python3指向虚拟环境目录中的 Python3 可执行文件来验证。

我怀疑这是因为 source 在一个 bash 实例中运行,但 exec bash 创建了一个新的实例以保持终端打开(这里只是一个假设)。

你是对的,exec bash替换第一个(非交互式 shell) 和另外一个(交互式 shell 采购~/.bashrc)...你可以用以下方法修补:

gnome-terminal --geometry 160x80+-26+4 \
--working-directory=/home/user/Work/project \
-- bash -ic "source /home/user/Work/project/environment/bin/activate; exec bash --norc"

相关内容