Python 3 в emacs

Я изменился два дня назад на Emacs 23, который в последнее время дал мне большую головную боль, особенно, поскольку у меня установлены две версии Python, более старые версии 2.7 и 3. Как я обычно хочу запустить интерпретатор python 3, быть хорошим, если я могу сказать Emacs каким-то образом использовать python 3 вместо 2.7.

Кроме того, я не смог найти модуль, который поможет выделить синтаксис python3. В настоящее время я использую python-mode.el для выделения.

Кроме того, если у кого-то был хороший совет, для которого лучше всего было бы показать pydoc, я был бы очень благодарен.

Спасибо заранее!

Ответ 1

Если вы используете python-mode.el, вы можете указать исполняемый файл, который будет выполняться как неполный процесс, установив переменную py-python-command, например:

(setq py-python-command "python3")

Естественно, вам нужно указать имя двоичного файла, существующего в вашей системе вместо "python3", если оно отличается. В python.el аналогичная переменная для установки - python-python-command.

Что касается использования pydoc, то есть несколько возможностей. Во-первых, вы можете просто выполнить help() внутри нижестоящего процесса Python. Если вы выберете этот параметр, вам может оказаться полезным добавить следующий код в ваш файл .emacs:

(setenv "PAGER" "cat")

Это необходимо, потому что интерактивные пейджеры (например, less, more, most и т.д.) не работают особенно хорошо внутри нижних буферов процессов. Во-вторых, вы можете установить пакет Texinfo, содержащий документацию, и использовать Emacs info browser (q.v., Программирование на Python в Emacs). Наконец, если вы решите использовать python.el, он включает в себя интерактивную функцию под названием python-describe-symbol, которая может искать справки pydoc по запросу (и я подозреваю, что python-mode.el должен иметь что-то подобное). Если вы будете искать немного, я уверен, что вы также можете найти другие методы и/или сторонние пакеты.

Ответ 2

После того, как я сделал следующее, я получил следующее поведение: при редактировании файла Python в emacs C-c C-p создает новый буфер с интерпретатором Python3.

Добавьте в файл .emacs следующее:

(defcustom python-shell-interpreter "python3"
  "Default Python interpreter for shell."
  :type 'string
  :group 'python)

Я пробовал это, потому что нашел

(defcustom python-shell-interpreter "python"
  "Default Python interpreter for shell."
  :type 'string
  :group 'python)

в python.el. И я предположил (i), что "python" можно заменить на "python3" и (ii), что это переопределит определение в python.el.

Вероятно, есть причины, почему это неэффективно или тяжело или плохо. Я emacs newb.

Ответ 3

запустите интерпретатор python

M-x python RET

(интерпретатор по умолчанию)

M-x pythonVERSION

где VERSION означает любую установленную версию

Ответ 4

Для ленивых:

M-x customize-variable python-shell-interpreter

установлен на python3. Который автоматизирует @Андрей ответ.

Ответ 5

Примечание. python-mode.el знает иерархию, как определить нужную версию

a shebang предшествует настройке py-shell-name в то время как py-execute-THING-PYTHONVERSION

будет предшествовать также shebang для команды

см. меню PyExec

Ответ 6

Вдохновленный ответом @serv-inc, вы также можете поставить

(setq python-shell-interpreter "python3")

в ваш ./.emacs.d/init.el или где вы храните свою конфигурацию.