繁体   English   中英

在conda环境中运行gud-pdb

[英]Running gud-pdb with conda environment

如何在给定的conda环境中激活的文件上从emacs运行pdb

我已经设置了exec-pathPATH来包含当前的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”。 但是,如果我在sci conda环境中运行的文件上运行pdb ,例如。 它已经安装了numpy等, pdb找不到这些库:

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) 

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 pythonwhich python步骤。 答案必须是安装了库的python实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM