Python 脚本可以激活虚拟环境,然后在其中触发交互式 pdb 会话吗?

Can a Python script activate a virtual environment and then trigger an interactive pdb session within it?

在我的 Linux 机器上,我可以激活虚拟环境并使用以下 bash 命令启动交互式调试会话 -

source ~/pytorch-3.7-env/bin/activate
python -m pdb ~/python_project/testscript.py

python 脚本可以达到同样的效果吗?

当我尝试在子 shell 中执行第一个命令 source ~/pytorch-3.7-env/bin/activate 失败时,可能是因为 source 是一个 bash 内置命令 -

>>> os.system("source pytorch-3.7-env/bin/activate")
sh: 1: source: not found
32512

有什么想法吗?

最好的方法是使用:

#! ~/pytorch-3.7-env/bin/python

在文件的顶部。

或 你可以使用 subprocess: 来执行命令

import subprocess
subprocess.call(". .FULL_PATH/pytorch-3.7-env/bin/python")

可以,但没有理由这样做:您可以直接调用 virtualenv 的 python (~/pytorch-3.7-env/bin/python),它会在正确的环境中执行。您不需要在非交互式环境中激活环境。