簡體   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