питон 3 в emacs

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

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

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

Заранее спасибо!


person YumTum    schedule 17.06.2012    source источник


Ответы (7)


Если вы используете 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 (см. Программирование на Python в Emacs). Наконец, если вы решите использовать python.el, он включает в себя интерактивную функцию под названием python-describe-symbol, которая может искать pydoc справку по запросу (и я подозреваю, что python-mode.el должно иметь что-то подобное). Если вы немного поищите, я уверен, что вы сможете найти и другие методы и/или сторонние пакеты.

person Greg E.    schedule 17.06.2012
comment
Спасибо за ваш ответ! Тем не менее, если я помещу (setq py-python-command /usr/bin/python3) в .emacs, я, похоже, не справлюсь. Я дважды проверил путь к python, он кажется правильным. Я также пробовал это с помощью команды python-python-command, в случае, если python-mode.el просто не работает, но снова безрезультатно. Любые идеи? - person YumTum; 17.06.2012
comment
Если двоичный файл python3 находится в вашей системе $PATH, вам не нужно указывать полный и явный путь к каталогу. Попробуйте поместить эту команду внутри python-mode-hook в файле .emacs, то есть: (add-hook 'python-mode-hook #'(lambda () (setq py-python-command "python3"))). - person Greg E.; 17.06.2012
comment
В настоящее время я использую python.el, так что я могу что-то забыть относительно python-mode.el. Вам также может понадобиться установить переменную py-which-shell аналогичным образом, хотя я не помню, чтобы мне приходилось делать это, когда я работал с python-mode.el. - person Greg E.; 17.06.2012

  • [RET] = клавиша ввода или возврата.
  • M = клавиша Meta или Alt.

Если вы хотите, чтобы Emacs сделал всю тяжелую работу за вас, откройте диалоговое окно настроек Emacs, чтобы Emacs установил его автоматически.

M-x customize-variable [RET] python-shell-interpreter [RET]

Должен появиться новый буфер, в котором вы можете настроить используемый вами интерпретатор Python.

Поле справа от Python Shell Interpreter: будет текущим интерпретатором, который вы используете. В моем случае это было python, поэтому я изменил его на python3. Затем переместите лечащий инструмент, чтобы выбрать кнопку Apply and Save выше, и нажмите [RET], чтобы Emacs принял новые настройки. В качестве альтернативы вы можете щелкнуть кнопку мышью.

В следующий раз, когда вы откроете интерпретатор python Emacs, он будет использовать новый python, который вы установили в диалоговом окне настроек.

person serv-inc    schedule 03.06.2019
comment
Это должен быть принятый ответ. - person Grimxn; 17.02.2021

После того, как я сделал следующее, я получил следующее поведение: при редактировании файла 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.

person Andrew Z    schedule 01.03.2017

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

M-x питон RET

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

M-x pythonВЕРСИЯ

где ВЕРСИЯ означает любую установленную версию

person Andreas Röhler    schedule 23.07.2012

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

Шебанг предшествует настройке py-shell-name, а py-execute-THING-PYTHONVERSION

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

см. меню PyExec

person Andreas Röhler    schedule 23.07.2012

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

(setq python-shell-interpreter "python3")

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

person loki    schedule 15.10.2019

Сейчас декабрь 2020 года, я использую EMACS 25, иначе не настроенный для Python, и обнаружил следующее:

(setq python-shell-interpreter "python3")

добавленный в мой файл .emacs, сделал свое дело и привел к достаточно интуитивно понятному способу работы с python3. C-c C-c отправляет мой файл интерпретатору (или просит запустить новый интерпретатор и говорит, как это сделать).

Конечно, теперь интерпретатор python3 запускается для любого файла python, поэтому программы python 2 не работают.

Я представляю себе лучший мир, в котором emacs смотрит на строку #!/usr/bin/env python2 вверху моего файла и выясняет, какой интерпретатор запустить с помощью какой-то безумной высокотехнологичной магии.

person John Lawrence Aspden    schedule 15.12.2020