我使用 Emacs 来完成许多任务,当我开始使用 Python 时,我想继续使用 Emacs 在 Python 中进行编码。
我已经为 Python3 设置了一个 virtualenv,它正在按预期工作。我还安装了 Emacs 24.5 和最新版本的 Emacs Prelude。
当我编辑 Python 源文件时,我所期望的一切都在工作——代码完成、对象检查等——但对于我的系统范围的 Python 安装,而不是我为项目设置的虚拟环境。
如何告诉 Emacs 对给定项目使用虚拟环境?
Elpy 支持通过 Pyvenv 内置的虚拟环境。 Pyvenv 也可以作为独立包安装。 Pyvenv 在 2014 年添加了对特定于项目的虚拟环境的支持,但我自己还没有尝试过它们,所以我不知道它的效果如何。
如果你想在 Emacs 中编写 Python 代码,我建议安装 Elpy。它确实简化了获得良好环境的启动和运行过程,并且它是模块化的,因此当您决定需要更定制的软件包时,您可以随着时间的推移停用部分。
您可能还想看看 virtualenvwrapper.el,尽管 Pyenv 看起来有更多功能。还有 auto-virtualenv,它尝试自动执行虚拟环境发现和激活。
好吧,这篇文章对我解决这个问题有帮助。
将其添加到您的 init.el 或 ~.emacs 中:
(use-package pyvenv
:ensure t
:config
(pyvenv-mode t)
;; Set correct Python interpreter
(setq pyvenv-post-activate-hooks
(list (lambda ()
(setq python-shell-interpreter (concat pyvenv-virtual-env "bin/python3")))))
(setq pyvenv-post-deactivate-hooks
(list (lambda ()
(setq python-shell-interpreter "python3")))))
所以下次,在你想要的目录中创建虚拟环境(我总是称它们为env,并将其安装在项目目录中)
python -m venv env
然后打开emacs
M-x pyvenv-activate RET dir_to_the_environment/env
最后 C-c C-p 使用环境运行 python 子进程。所有功劳归于fredrikmeyer
对于我这个 Python 初学者来说,最简单的解决方案是使用 https://github.com/marcwebbie/auto-virtualenv,elpy venv 由于某种原因不起作用。我在项目根目录中创建了一个 venv,添加了一个 .projectile 文件以进行良好的测量,当您按照 github 自述文件中的记录进行设置时,它“正常工作”。
我有我的虚拟环境
~/.python/venv/
为了让它在 Emacs 中工作,我就这么做了
(setq python-interpreter "~/.python/venv/bin/python")
(setq python-shell-interpreter "~/.python/venv/bin/python")
附注要在 Org 模式下使用其他环境,我设置了
#+PROPERTY: HEADER-ARGS:python+ :python ~/.python/venv/bin/python