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

一年过去了, 想问一下楼主,现在有好的解决方案了吗? 我试了一下那个 conda.el 的包,好像也是不行… :upside_down_face:

这个包我也试过,没成功。我现在在windows 上是通过 scoop 安装官方的python,不用anaconda了。你可以参考一下下面的这个配置,这哥们就是Anaconda 的工程师。

好吧. 太可惜了. 我应该只能使用Windows下面 anaconda.

我是按照conda.el的readme设置的,在python-shell和eshell都可以顺利检测和激活conda env。主要是指定出conda的安装目录即可,例如我的是macos,用brew安装了miniconda,路径就是/usr/local/Caskroom/miniconda/base/

嗯嗯,使用 conda.el 可以很方面再 linux 或者是 mac 下面切换环境,但是在 windows 下面同样的方案好像存在一定的问题… 这个和 windows 本身有一定的关系吧。

当然,这个我也好久没有跟踪了,或许现在windows 也有解决方案了。 我现在 Python 主要还是用 pycharm。