在emacs中从virtualenv指定python解释器

Tom*_*lis 12 python emacs virtualenv

今天我一直在尝试将更多与Python相关的模式带入我的Emacs配置中,但我没有太多运气.

首先我注意到的是,根据Emacs的启动方式(终端vs桌面),它决定使用的解释器是不同的.

  • 从KDE菜单启动:M-! which python给出/usr/bin/python

  • 从终端发起:M-! which python给出~/local/bin/python

我可以接受这个,因为我的.bashrc〜/ local/bin附加 到路径上,我猜KDE默认忽略它.我可以解决这个问题,但是我不明白的是,如果我激活virtualenv,我会期望M-!哪个python指向 〜/ project.env/bin/python但是它仍然指向〜/ local/bin/python.

因此,当我M-x py-shell,我得到〜/ local/bin/python所以如果我尝试 M-x py-execute-buffer在virtualenv中的一个包中驻留的模块,py-shell会抱怨在virtualenv中也不知道模块.

py-python-command设置为"〜/ project.env/bin/python"似乎在加载所有内容后无效.

所以我想我的问题的总体症结是,如何让所有与python相关的emacs东西指向正确的解释器?

Tom*_*lis 8

因此,似乎python-shell通过拾取环境设置来做正确的事情,而py-shell则没有.python-shell由python.el提供,py-shell由python-mode.el提供,有与此相关的bug报告等,所以我现在不打算使用py-shell.如果谷歌机器出于某种原因认为这是一个高排名的项目,我想关闭这个循环.

  • 关于在Emacs上使用virtualenv的有用页面(因为我通过谷歌发现了这个页面):http://jesselegg.com/archives/2010/03/14/emacs-python-programmers-2-virtualenv-ipython-daemon-mode/ (3认同)