Emacs и Конда обходной путь - PullRequest
5 голосов
/ 15 марта 2019

Я использую Emacs и Anaconda.

У меня есть это в моем init.el:

(setenv "WORKON_HOME" "/home/user/anaconda3/envs/")

И Конда на моем пути:

# added by Anaconda3 installer
export PATH="/home/user/anaconda3/bin:$PATH"

но emacs не может найти мои окружения conda, что, как я понимаю, должно быть в состоянии сделать ..

Итак, когда я запускаю C-c C-p для начала нового сеанса и C-c C-c, он не может импортировать мои пакеты, которые установлены в среде conda, с ModuleNotFoundError.

Поскольку я добавил это к своему пути, и он все еще не работает, я пытаюсь обойти это и все еще иметь возможность запускать мои приложения conda из emacs.

Я могу открыть shell в emacs с помощью M-x shell, затем source activate myenv и запустить python.

Теперь я хочу C-c C-c скопировать в / this / shell . Как пометить этот shell buffer как процесс python для отправки текста моего file.py на Cc Cc, а не просто как оболочку shell ?

Update1

Я также посмотрел следующие ссылки:

Но ни один из пакетов не работает для меня. Я все еще получаю, когда я пытаюсь:

conda-env-list

*Conda envs*

Создает пустой буфер.

И это для pyvenv-workon:

pyvenv-workon
  Work on:  (empty)

Эти среды очень существуют, и невозможно использовать emacs в качестве Python IDE, если я не могу запустить свой код.

Ответы [ 2 ]

6 голосов
/ 15 марта 2019

Программы наследуют переменные среды от оболочки, которая их породила.Работа conda и virtualenv заключается в переопределении переменной PATH оболочки.Они делают это так, что ОС находит новую версию приложения (conda или virtualenv) вместо версии по умолчанию, установленной вместе с ОС (Mac поставляются с древней версией python).

Итак, что здесь происходит?Если вы запустите Emacs, дважды щелкнув значок ОС, он унаследует переменные среды оболочки по умолчанию.Поэтому, когда вы пытаетесь вызвать библиотеку, которую вы установили с помощью conda (или, что то же самое, с помощью virtualenv и pip), поскольку вы используете путь ОС по умолчанию, ОС находит версию python по умолчанию (и, что особенно важно, библиотеки версий по умолчанию).Версия Python по умолчанию будет отвечать «Я понятия не имею, что это за библиотека».

Как это исправить?Один надежный способ - , а не запускать Emacs, дважды щелкнув значок ОС.Вот что я делаю больше всего дней:

1) start a console/terminal
2) switch to the conda environment `activate py37` 
    (or with virtualenv: `source .py37dev/bin/activate`)
3) start Emacs from that same shell that has the modified environment variables.  
    On a Mac its: `/Applications/Emacs.app/Contents/MacOS/Emacs` 
    (I use a installed version of Emacs on the Mac because the one that 
    comes with Mac is ancient).  
    On Linux and Windows the path to EMacs will be different but the idea is the same.
4) start a shell inside Emacs and you should see the shell looks the way it does 
    in your conda shell (or virtualenv shell)

вот как это выглядит для меня: enter image description here

Посмотрите, как версия Python неОС по умолчанию Python?Это из среды virtualenv + pip (conda работает точно так же, просто команда start envirmonment - это другая команда)

1 голос
/ 23 июня 2019

Мне показалось, что я могу использовать пакет conda от ELPA и установить две его переменные конфигурации, чтобы они указывали на мой каталог Conda. Следующий фрагмент делает трюк в моем .emacs:

(use-package conda
  :ensure t
  :init
  (setq conda-anaconda-home (expand-file-name "~/miniconda3"))
  (setq conda-env-home-directory (expand-file-name "~/miniconda3")))
  • conda-anaconda-home является эквивалентом переменной окружения ANACONDA_HOME (т.е. содержит все файлы вашей установки Anaconda)
  • conda-env-home-directory - это каталог, в котором хранятся ваши виртуальные среды (в подкаталоге envs)

С этой конфигурацией я могу запустить M-x conda-env-activ и получить доступ ко всем ранее созданным envs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...