在 conda 环境中使用 pdb 进行调试

Debuggin with pdb within a conda environment

我正在 python Conda 环境中进行开发。当运行在环境下创建的"python"二进制文件时,我添加到环境中的所有包都可以成功导入。但是,当尝试使用 pdb 调试我的任何 python 脚本时,对于相同的包,我会得到 ImportError。

例如新建环境,添加如下包后

pip install keras
pip install conection

我运行以下test.py脚本

import keras
import connexion

print("I have imported keras alright")
print("I have imported connexion alright")

from keras.models import Sequential
from keras.layers import Dense, Activation

# for a single-input model with 2 classes (binary):

model = Sequential()
model.add(Dense(1, input_dim=784, activation='softmax'))

print("I have defined a keras network alright")

以通常的方式调用它时,它工作正常,

python test.py  # Works OK

但是当 运行在 pdb

中处于调试模式时失败
pdb test.py # ImportError: No module named connexion

问题是:如何正确配置 pdb 以使用在 conda 环境中安装的包?

附加信息:虽然 python 二进制文件确实在 conda 环境中

which python # returns $HOME/miniconda3/envs/$USER/bin/python

pdb好像总是指系统版本

which pdb # returns /usr/bin/pdb

pdb 可执行文件复制到您的环境,并将 shebang(第一行)从 #!/usr/bin/python 设置为 #!/usr/bin/env python。如果您希望这是任何环境(包括系统 pdb)的默认行为,您只能在 /usr/bin/pdb.

中更改 shebang

或者,使用 python3 -m pdb <script> 将 pdb 与 conda 和 python 3

一起使用