如何设置 Emacs 使用给定的 Python virtualenv?

问题描述 投票:0回答:5

我使用 Emacs 来完成许多任务,当我开始使用 Python 时,我想继续使用 Emacs 在 Python 中进行编码。

我已经为 Python3 设置了一个 virtualenv,它正在按预期工作。我还安装了 Emacs 24.5 和最新版本的 Emacs Prelude

当我编辑 Python 源文件时,我所期望的一切都在工作——代码完成、对象检查等——但对于我的系统范围的 Python 安装,而不是我为项目设置的虚拟环境。

如何告诉 Emacs 对给定项目使用虚拟环境?

python emacs virtualenv emacs-prelude
5个回答
16
投票

我知道这是一个相当老的话题,但对于那些来这里寻找答案的人来说,更多最新的答案可能会很有用。

我用pyvenv,主要是

pyvenv-workon

尝试一下。我希望它对你有用。


11
投票

Elpy 支持通过 Pyvenv 内置的虚拟环境。 Pyvenv 也可以作为独立包安装。 Pyvenv 在 2014 年添加了对特定于项目的虚拟环境的支持,但我自己还没有尝试过它们,所以我不知道它的效果如何。

如果你想在 Emacs 中编写 Python 代码,我建议安装 Elpy。它确实简化了获得良好环境的启动和运行过程,并且它是模块化的,因此当您决定需要更定制的软件包时,您可以随着时间的推移停用部分。

您可能还想看看 virtualenvwrapper.el,尽管 Pyenv 看起来有更多功能。还有 auto-virtualenv,它尝试自动执行虚拟环境发现和激活。


4
投票

好吧,这篇文章对我解决这个问题有帮助。

将其添加到您的 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


1
投票

对于我这个 Python 初学者来说,最简单的解决方案是使用 https://github.com/marcwebbie/auto-virtualenv,elpy venv 由于某种原因不起作用。我在项目根目录中创建了一个 venv,添加了一个 .projectile 文件以进行良好的测量,当您按照 github 自述文件中的记录进行设置时,它“正常工作”。


0
投票

我有我的虚拟环境

~/.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
© www.soinside.com 2019 - 2024. All rights reserved.