更改emacs的python解释器

时间:2010-03-25 13:14:52

标签: python emacs

Emacs使用旧版本的python(2.3)我有默认的python模式,有没有办法告诉emacs使用我在我的主目录中的新版本?

btw我正在使用红帽发行版并且没有root权限。

5 个答案:

答案 0 :(得分:15)

检查自定义组您要调整的内容是个好习惯。只是做:

M-x customize-group RET python RET

你现在有多种选择应该是有趣的:

Python Python Command

您可以在那里自定义并保存以供进一步的会话。

答案 1 :(得分:9)

通过.emacs:

尝试添加到您的~/.emacs文件中:

(setq python-python-command "~/your/python/bin-dir/python")

通过shell环境:

由Emacs运行的python命令通常为python,因此您可以尝试更改路径的简单方法:

export PATH=~/your/python/bin-dir:$PATH

答案 2 :(得分:1)

python-python-command适用于年龄较大的" loveshack python.el"。对于使用" gallina python.el"的最新版本的Emacs,请使用变量python-shell-interpreter

(setq python-shell-interpreter "/path/to/python")

https://www.emacswiki.org/emacs/PythonProgrammingInEmacs#toc2

答案 3 :(得分:0)

在Windows 10上,我安装了两个版本的Python:

  1. v3.5安装在C:\ProgramData\chocolatey\bin
  2. v3.6安装在C:\Program Files\Python36\
  3. Emacs使用v3.5,但我更喜欢使用v3.6。因此,我通过编辑Environment Variables

    来执行以下操作来纠正此问题
    1. 开始 - >输入“环境变量”
    2. 选择Edit the system environment variables - > Environment Variables...
    3. System variables下,选择Path变量 - > Edit... - > New
    4. 将路径添加到所需的Python目录
    5. 单击Move up将新文件路径放在其他Python目录之上。
    6. 就我而言#4&上面#5,我添加了C:\Program Files\Python36\(v3.6目录),然后将其移到C:\ProgramData\chocolatey\bin上方(v3.5目录)

答案 4 :(得分:0)

我知道这个问题是关于一个全局python解释器的,但是许多人可以到这里来寻找为每个项目设置一个python解释器的常见问题。

假设每个项目都有一个virtualenv,一个好的解决方案是在位于项目根目录的.dir-local.el文件中设置python解释器。

.dir-local.el示例:

class PersonControllerSpec extends Specification {

    @Shared @AutoCleanup EmbeddedServer embeddedServer = ApplicationContext.run(EmbeddedServer)
    @Shared PersonClient client
    @Shared PersonService service

    void setupSpec(){
        client = embeddedServer.applicationContext.getBean(PersonClient)
        service = embeddedServer.applicationContext.getBean(PersonService)
    }


    @Transactional
    void cleanup(){
        Person.list()*.delete()
    }

    def "/people should return 2 elements" (){
        given:
        service.save(new Person(name: "Daniel", lastName: "Araiza", age: 22, phone: "235-547-8761" ))
        service.save(new Person(name: "Omar", lastName: "Bautista", age: 32, phone: "765-234-8623"))
        when:
        List<Person> people = client.list()
        then:
        people.size() == 2
    }
}