2011-06-08 60 views
5

在Emacs的python模式中用常規python shell替換常規的/ usr/bin/python需要做些什麼?用於Emacs python模式的自定義Python shell

基本上我有一個二進制文件/ usr/bin中/ mypython開始python解釋提示之前,做一些初始化,並用於所有目的的交互,所得到的解釋器殼是等效到/ usr /斌/蟒。

但是,如果我指定這個二進制中的 「蟒蛇,蟒蛇命令」(在Emacs 23.3使用python.el),我得到 「只有Python版本> = 2.2和3.0 <支持」

回答

5

我我要讀取elisp來檢查,但我敢打賭,如果你添加了一個--version標誌,保存結果爲/usr/bin/python,emacs會很高興。

更新

這裏是在Emacs 23.3.1在python.el線1555及以下的代碼:

(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) 
只打印「真」或「假」的

。修復你的腳本來處理-c標誌,你應該沒問題。

或者,你可以採取黑客的方式,並強制python-version-checked的值爲t,它永遠不會執行檢查。

+0

感謝指針,通過文件查找我發現了另一個問題 - 「-i」標誌是硬連線的(因此從python-python-command-args中移除它不會阻止它被傳遞) – 2011-06-08 06:19:14

+0

那麼,這就是爲什麼他們會給你來源。但是,特別是,這聽起來像是一個錯誤,改變它並提交一個補丁。 – 2011-06-08 22:04:14

1

打敗最簡單的檢查方法是撒謊,告訴python-check-version那它已經檢查:

(setq python-version-checked t) 
0

使用python-mode.el只是做

的Mx MY-RET PYTHON

鑑於Python版本已安裝

https://launchpad.net/python-mode

+0

歡迎來到StackOverflow!我看到你很熱情,並有一個最喜歡的工具。但是,推薦或鏈接到**全部**的同一網站您的帖子,以及單獨第一天的10次,可能會觸發此網站上的「潛在垃圾郵件」信號。所以保重!只是一個友好的建議。 – 2012-07-22 20:01:25