pythonemacscondapdbgdb-python

Running gud-pdb with conda environment


How can I run pdb from emacs on a file that is activated in a given conda environment.

I have setup exec-path and PATH to contain the current conda path, eg.

exec-path
("~/miniconda3/envs/sci/bin" ...)

(getenv "PATH")
"~/miniconda3/envs/sci/bin:..."

From within emacs,

(executable-find "python")
"~/miniconda3/envs/sci/bin/python

returns the proper python. pdb is located at "/usr/bin/pdb". However, if I run pdb on a file that is running in the sci conda environment, eg. its has numpy, etc. installed, pdb can't find those libraries:

test.py

import numpy as np
import pandas as pd

tst = np.linspace(1, 10, num=10)
print(tst)

pdb ./test.py

Current directory is 
~/scratch/python/
> 
~/scratch/python/test.py(1)<module>()
-> import numpy as np
(Pdb) n
ImportError: 'No module named numpy'
> 
~/scratch/python/test.py(1)<module>()
-> import numpy as np
(Pdb) 

Solution

  • Customizing gud-pdb-command-name to python -m pdb seems to work.

    So, pdb python -m pdb ./test.py runs in the correct environment.