使用的Python环境管理是 conda
详细情况记录在这个 issue 上。
一开始使用anaconda-mode自带的切换方式, M-x pythonic-activate RET /path/to/virtualenv RET ,发现在 Python Shell 、 pdb 和 flycheck 上分别使用了不同的虚拟环境。
后续分别尝试了 direnv.el 插件和 purcell 的 envrc.el 插件。这两个插件都是基于 direnv 工作的。
direnv 是一个 shell 扩展,可以根据 shell 进入的目录不同,加载和卸载环境变量。这个 主页 可以看到 direnv 的安装方式。这个 wiki 包含的使用方法和与其他工具的集成,包括了如何切换Python的虚拟环境的 方法 。
使用这个插件,我发现需要在一个 .envrc 文件的目录下打开 emacs 才能正常使用。如果不是在该环境下,虚拟环境的自动切换并不起作用。一旦生效了,切换目录时,虚拟环境会自动切换,并且在上述的三个环境中都可以使用相同的环境。特别的,在 python shell 中,只需要 exit() ,重新再 C-c C-p 就可以在新环境中运行。
会出现第一次打开一个存在.envrc文件目录的文件时,虚拟环境不起作用。此时手动 M-x envrc-allow RET 才能生效。此时切换工作目录可以自动切换虚拟环境。但是特别的,在 python shell 中,需要完全kill掉buffer,重新再 C-c C-p 才可以在新环境中运行。
我说一下Linux下的吧。其实方法很简单,先打开一个源文件,主菜单中会多出一个Python项。
要调试程序则选Python/Debugger,此时在最下面的minibuffer中会出现提示:
Run pdb (like this): pdb --annotate=3 test1.py
将其改为:
Run pdb (like this): python -m pdb --annotate=3 test1.py
回车之后就可以开始调试了。