Запуск gud-pdb в среде conda - PullRequest
       25

Запуск gud-pdb в среде conda

0 голосов
/ 17 сентября 2018

Как мне запустить 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

возвращает правильный питон. pdb находится в "/ usr / bin / pdb". Однако, если я запускаю pdb для файла, который выполняется в среде sci conda, например. 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) 

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

При использовании virtualenv или conda я активирую env в терминале, а затем запускаю emacs с этого терминала.На Mac:

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

, если вы хотите просто иметь терминальную версию emacs, добавьте аргумент -nw

, затем в emacs введите команду M + x pdb

отлично работает для меня.Проблема здесь в том, что часто есть несколько установок Python.Поэтому emacs не может найти a 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

, так что настройте ваш виртуальный env с помощью conda с нужными вам библиотеками.Когда вы находитесь внутри emacs, запускаете оболочку и делаете шаг which python.Ответом должен быть экземпляр python с установленными библиотеками.

0 голосов
/ 17 сентября 2018

Настройка gud-pdb-command-name на python -m pdb, кажется, работает.

Итак, pdb python -m pdb ./test.py работает в правильной среде.

...