Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python pdb on python script run as package

I have a python program that I usually run as a part of a package:

python -m mymod.client

in order to deal with relative imports inside "mymod/client.py." How do I run this with pdb - the python debugger. The following does not work:

python -m pdb mymod.client

It yields the error:

Error: mymod.client does not exist

EDIT #1 (to address possible duplicity of question)

My question isn't really about running two modules simultaneously python, rather it is about how to use pdb on a python script that has relative imports inside it and which one usually deals with by running the script with "python -m."

Restated, my question could then be, how do I use pdb on such a script while not having to change the script itself just to have it run with pdb (ie: preserving the relative imports inside the script as much as possible). Shouldn't this be possible, or am I forced to refactor in some way if I want to use pdb? If so what would be the minimal changes to the structure of the script that I'd have to introduce to allow me to leverage pdb.

In summary, I don't care how I run the script, just so long as I can get it working with pdb without changing it's internal structure (relative imports, etc) too much.

like image 733
David Simic Avatar asked Mar 25 '16 20:03

David Simic


1 Answers

I think I have a solution.

Run it like this:

python -m pdb path/mymod/client.py arg1 arg2

that will run it as a script, but will not treat it as a package. At the top of client.py, the first line should be:

import mymod

That will get the package itself loaded. I am still playing with this, but it seems to work so far.

like image 128
Skotch Avatar answered Sep 18 '22 18:09

Skotch