Пользовательская оболочка Python для Emacs python-mode - PullRequest
6 голосов
/ 08 июня 2011

Что нужно для замены обычного / usr / bin / python пользовательской оболочкой python в python-режиме Emacs?

В основном у меня есть двоичный файл / usr / bin / mypython, который выполняет некоторые инициализации передзапуск приглашения интерпретатора python и для всех целей взаимодействия результирующая оболочка интерпретатора эквивалентна /usr/bin/python.

Однако, если я укажу этот двоичный файл в "python-python-command" (используя python.в Emacs 23.3) я получаю «Поддерживаются только версии Python> = 2.2 и <3.0» * </p>

Ответы [ 3 ]

5 голосов
/ 08 июня 2011

Я собираюсь прочитать elisp для проверки, но я бы поспорил, если бы вы добавили флаг --version, который дал бы результаты сохранения как /usr/bin/python, emacs был бы счастлив.

Обновление

Вот код в строке python.el 1555 и далее в EMACS 23.3.1:

(defvar python-version-checked nil)
(defun python-check-version (cmd)
  "Check that CMD runs a suitable version of Python."
  ;; Fixme:  Check on Jython.
  (unless (or python-version-checked
          (equal 0 (string-match (regexp-quote python-python-command)
                     cmd)))
    (unless (shell-command-to-string cmd)
      (error "Can't run Python command `%s'" cmd))
    (let* ((res (shell-command-to-string
                 (concat cmd
                         " -c \"from sys import version_info;\
print version_info >= (2, 2) and version_info < (3, 0)\""))))
      (unless (string-match "True" res)
    (error "Only Python versions >= 2.2 and < 3.0 are supported")))
    (setq python-version-checked t)))

То, что он делает, запускает однострочник

from sys import version_info;
print version_info >= (2, 2) and version_info < (3, 0)

, который просто печатает "True" или "False". Исправьте ваш скрипт для обработки флага -c, и все будет в порядке.

В качестве альтернативы, вы можете выбрать выход хакера и принудительно ввести значение python-version-checked в t, и он никогда не выполнит проверку.

1 голос
/ 08 июня 2011

Самый простой способ победить чек - это соврать и сказать python-check-version, что он уже проверен:

(setq python-version-checked t)
0 голосов
/ 22 июля 2012

с python-mode.el просто выполните

Mx MY-PYTHON RET

, если установлена ​​версия Python

https://launchpad.net/python-mode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...