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

问题描述 投票:3回答:2

我正在Conda环境中开发python。运行在环境下创建的“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
python anaconda pdb
2个回答
2
投票

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


5
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.