17

Emacs uses an older version of python(2.3) i have for the default python mode, is there a way for me to tell emacs to use the newer version that i have in my home directory?

btw I'm using a red hat distro and dont have root privileges.

5 Answers 5

17

It is good habit to check customize-group of things you wanna tweak. Just do:

M-x customize-group RET python RET

you've got now multiple options of which one should be interesting:

Python Python Command

You can customize it there and Save for further sessions.

Sign up to request clarification or add additional context in comments.

7 Comments

Is there a way to switch dynamically? Like I have several python projects using different interpreters. It would be nice if there is an association possible between buffer and particular interpreter via local variable or something.
@mit did you find an answer to that? I have been ferreting the internet for an answer but in vain. Although I know its quite possible through comint or babel and adding hooks, but the process seem quite convoluted and I have almost no experience in Lisp programming
This is the real answer. I just switched python to python3 and all my problems were immediately solved. Also found out the switch to turn on eldoc. Thanks!
finally! Had been stumbling upon all these setq python-python-command suggestions that don't work. This is it. @sam, if it worked for you, you should accept the answer and mark it as solved
on my other pc i had to find the "Python Shell Interpreter" line and change it
|
10

Via .emacs:

Try to add to your ~/.emacs file:

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

or

Via the shell environment:

The python command that is run by Emacs is typically python, so you can try the simple approach of changing your path:

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

3 Comments

Doesn't work by adding to ~/.emacs.d/init.el file. Still opens the old interpreter when I say `M-x run-python'
python-python-command is for "loveshack python.el", which was the python mode that shipped with older emacs versions. "Gallina python.el" is the one that's in current versions. Use python-shell-interpreter instead. emacswiki.org/emacs/PythonProgrammingInEmacs#toc2
The above didn't work for me in Emacs 27. Refer here for more information.
8

python-python-command is for the older "loveshack python.el". For recent versions of Emacs, which use "gallina python.el", use the variable python-shell-interpreter.

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

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

1 Comment

Or add a per-file variable: # -*- python-shell-interpreter: "python3" -*-
4

I know that the question is about a global python interpreter, but many can arrive here looking for the common problem of setting one python interpreter per project.

Supposing one has a virtualenv per project, a good solution is to set the python interpreter at .dir-local.el file located at the project root.

.dir-local.el example:

 (
  (python-mode . (
                 (python-shell-interpreter . "~/my_project/venv/bin/python")
                 (flycheck-checker . python-pylint)
                 (flycheck-python-pylint-executable . "~/myproject/venv/bin/python")
                 (flycheck-pylintrc . "~/my_project/.pylintrc")
                  )
   )
  )

1 Comment

Unfortunately this seems to be ignored by org-babel for Python source blocks.
0

On Windows 10, I had two versions of Python installed:

  1. v3.5 installed under C:\ProgramData\chocolatey\bin
  2. v3.6 installed under C:\Program Files\Python36\

Emacs was using v3.5 but I preferred for it to use v3.6. Therefore, I did the following to correct this by editing my Environment Variables:

  1. Start -> Type in "environment variables"
  2. Select Edit the system environment variables -> Environment Variables...
  3. Under System variables, select Path variable -> Edit... -> New
  4. Add the path to your desired Python directory
  5. Click Move up to place the new filepath above whatever the other Python directory.

In my case for #4 & #5 above, I added C:\Program Files\Python36\ (v3.6 directory) and then moved it above C:\ProgramData\chocolatey\bin (v3.5 directory)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.