如何在给定pdb
环境中激活的文件上运行emacs中的conda
。
我已经设置了exec-path
和PATH
来包含当前的conda路径,例如。
exec-path
("~/miniconda3/envs/sci/bin" ...)
(getenv "PATH")
"~/miniconda3/envs/sci/bin:..."
从emacs内部,
(executable-find "python")
"~/miniconda3/envs/sci/bin/python
返回正确的python。 pdb
位于“/ usr / bin / pdb”。但是,如果我在pdb
conda环境中运行的文件上运行sci
,例如。它有numpy
等安装,pdb
找不到那些库:
test.朋友
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)
定制gud-pdb-command-name
到python -m pdb
似乎工作。
所以,pdb python -m pdb ./test.py
在正确的环境中运行。
当使用virtualenv或conda时,我所做的是激活终端中的env,然后从该终端启动emacs。在Mac上:
$ conda activate hcpy
(hcpy)$ /Applications/Emacs.app/Contents/MacOS/Emacs
如果你想只是拥有emacs的终端版本,请添加参数-nw
然后在emacs中命令M + x pdb
对我来说很好。这里的问题是经常有多个python安装。因此,emacs找不到python exe是不够的,emacs需要找到安装了库的python。
所以,例如,如果我去:
$which python
我明白了:
/Users/jamesanderson/anaconda3/bin/python
但是,如果我去:
$source ./.py3dev/bin/activate
$which python
/Users/jamesanderson/code/python/camera/.py3dev/bin/python
因此,使用带有所需库的conda设置虚拟环境。当你在emacs内部并启动一个shell时,执行which python
步骤。答案必须是安装了库的python实例。