15

我将 Emacs 用于许多任务,当我开始使用 Python 时,我想继续使用 Emacs 在 Python 中编码。

我已经为 Python3 设置了一个 virtualenv,它可以按需要工作。我还安装了 Emacs 24.5 和最新版本的Emacs Prelude

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

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

4

4 回答 4

11

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

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

你可能还想看看virtualenvwrapper.el,虽然 Pyenv 看起来有更多的功能。还有auto-virtualenv,它尝试自动发现和激活虚拟环境。

于 2016-08-26T03:58:12.103 回答
10

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

我主要使用pyvenvpyvenv-workon

试试看。我希望这个对你有用。

于 2019-01-02T16:52:23.870 回答
1

作为 Python 初学者,elpy venv 最简单的解决方案是使用https://github.com/marcwebbie/auto-virtualenv。我在我的项目根目录中创建了一个 venv,添加了一个 .projectile 文件以进行良好的测量,当您按照 github 自述文件中的说明进行设置时,它“就可以工作”。

于 2021-03-22T20:28:53.120 回答
0

好的,所以这篇文章可以帮助我解决这个问题。

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

然后打开emacsM-x pyvenv-activate RET dir_to_the_environment/env

最后 Cc Cp 使用环境运行 python 子进程。弗雷德里克迈耶的所有学分

于 2021-12-16T00:21:56.867 回答