【问题标题】:Can a Python script activate a virtual environment and then trigger an interactive pdb session within it?Python 脚本可以激活虚拟环境,然后在其中触发交互式 pdb 会话吗?
【发布时间】:2020-01-29 11:22:39
【问题描述】:

在我的 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

有什么想法吗?

【问题讨论】:

    标签: python python-3.x pdb python-venv


    【解决方案1】:

    最好的方法是使用:

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

    在文件的顶部。

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

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

    【讨论】:

    • 我收到了一个错误FileNotFoundError: [Errno 2] No such file or directory: 'source': 'source'
    • source ~/pytorch-3.7-env/bin/activate 更改了一些环境变量。如果我们跳过这一步,它会影响交互式 pdb 会话吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多