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
или где вы храните свою конфигурацию.