Anaconda 在emacs 中如何激活Python 环境?

OS:Windows 10 专业版 1909
emacs:emacs 26.3
emacs 配置:Purcell 的Emacs 配置 + Evil mode
问题:

  1. 在Emacs 中使用C-c,C-p 运行Python的时候,提示python 环境未激活。如下图:
    同样的问题,在默认的Cmd下也是需要conda activate 才能激活python 环境。
  2. 第一次打开python文件时,光标会在文字上卡顿5s才能加载Eldoc ,然后补全才正常。

请问大家都是怎么在Emacs中使用Anaconda-mode 加载Anaconda环境的?

另外也尝试过使用官网(https://www.python.org)下载的Python,不会出现激活的问题,但是shell中无法补全。会提示Shell native completion is disabled, calling rollback. 的提示。

ps:同样的配置在Linux 和 Mac OS 中一切都正常。

你已经发现问题了,在配置文件中针对 Windows 再做一遍:

想问一个其他的问题: 这种配置在windows中不卡吗?

找了很久也没有一个好的方案。尝试过使用conda.el 以及pyveve这两个插件。不知道在哪里可以使得run-python 加载python 之前先执行 conda activate my_envs. 有大神能给点思路吗?

默认配置直接用在Win10上是很卡的,特别是打开dired 和 org-mode的时候。
增加了(setq inhibit-compacting-font-caches t)和字体设置就不卡了。
但是启动的时间有点长(40-50s),可能是因为启动了session 和Desktop恢复功能。

额, 我windows上的emacs倒是没有这些问题, 启动大概10s.

在windows上, 好像只要是需要和外部程序频繁交互的, emacs都会很卡.

目前更改了Python的设置,发现启动时间也大大减少了,没有Desktop需要恢复的时候,大概也是10s左右。启动效果如下图:

关于Anaconda 激活的问题,目前没找到很好的方法,暂时放弃了,
改用官网的Python 3.8 + virtualenv + virtualenvwrapper的方案。shell的补全和交互环境交给ipython了。 在默认init-python.el配置中增加以下配置:

(setq python-shell-interpreter "ipython")
(setq python-shell-interpreter-args "-i")
(setq python-shell-prompt-regexp "In \\[[0-9]+\\]: ")
(setq python-shell-prompt-output-regexp "Out\\[[0-9]+\\]: ")
(setq python-shell-completion-setup-code "from IPython.core.completerlib import module_completion")

(setq python-shell-completion-module-string-code "';'.join(module_completion('''%s'''))\n")
(setq python-shell-completion-string-code "';'.join(get_ipython().Completer.all_completions('''%s'''))\n")

有一个极度简单的环境,不过我没试过. ivy 作者写的,

感谢提供信息,这个值得一试。不过这个包还没加入melpa,作者还在完善中。

1赞

原来在Windows 10 下 Anaconda3/Miniconda3 的python 3.7 版本有点问题,试了各种方法都没法激活。通过conda 创建3.8版本的虚拟环境后,并将下面的python路径加入环境变量的PATH中即可正常激活了,一切正常工作。

c:\tools\miniconda3\envs\py38\Scripts
c:\tools\miniconda3\envs\py38
c:\tools\miniconda3\envs\py38\Library\bin