0

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

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

测试.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) 
4

2 回答 2

0

自定义gud-pdb-command-name似乎python -m pdb工作。

因此,pdb python -m pdb ./test.py 在正确的环境中运行。

于 2018-09-16T22:43:54.813 回答
0

当使用 virtualenv 或 conda 时,我所做的是在终端中激活 env,然后从该终端启动 emacs。在 Mac 上:

$ conda activate hcpy
(hcpy)$ /Applications/Emacs.app/Contents/MacOS/Emacs

如果您只想拥有 emacs 的终端版本,请添加参数 -nw

然后在emacs中命令M+ xpdb

对我来说很好。这里的问题是经常有多个 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 实例。

于 2018-09-17T14:20:20.217 回答