2012-06-17 22 views
8

He cambiado hace dos días a Emacs 23, lo que últimamente me ha causado muchos dolores de cabeza, especialmente porque tengo instaladas dos versiones de Python, las anteriores 2.7 y 3. Como generalmente quiero iniciar python 3 intérprete, sería bueno si pudiera decirle a Emacs de alguna manera que use python 3 en lugar de 2.7.python 3 en emacs

Además, no pude encontrar un módulo que ayude a resaltar la sintaxis de python3. Actualmente estoy usando python-mode.el para resaltar.

Además, si alguien tuviera un buen consejo sobre qué módulo sería mejor mostrar el pydoc, estaría muy agradecido.

¡Gracias de antemano!

Respuesta

11

Si está utilizando python-mode.el, puede especificar el binario para ser ejecutado como un proceso inferiores estableciendo la variable py-python-command, es decir:

(setq py-python-command "python3") 

Naturalmente, usted tendrá que proporcionar el nombre de la binario tal como existe en su sistema en lugar de "python3", si es diferente. En python.el, la variable análoga a establecer es python-python-command.

En cuanto al uso de pydoc, hay algunas posibilidades. Primero, puedes simplemente ejecutar help() dentro del proceso inferior de Python. Si elige esta opción, es posible que sea de utilidad para añadir el siguiente código a su archivo .emacs:

(setenv "PAGER" "cat") 

Esto es necesario porque los buscapersonas interactivos (por ejemplo, less, more, most, etc.) no lo hacen funcionan particularmente bien dentro de los amortiguadores de procesos inferiores. En segundo lugar, puede instalar un paquete Texinfo que contenga la documentación y usar el navegador info de Emacs (q.v., Python Programming in Emacs). Finalmente, si opta por usar python.el, incluye una función interactiva llamada python-describe-symbol que puede buscar ayuda pydoc bajo demanda (y sospecho que python-mode.el debería tener algo similar). Si busca un poco, estoy seguro de que puede encontrar otros métodos y/o paquetes de terceros también.

+0

¡Gracias hasta ahora por su respuesta! Sin embargo, si pongo (setq py-python-command "/ usr/bin/python3") en .emacs, no parece que haga el trabajo. Revisé dos veces el camino a Python, parece ser correcto. También lo intenté con python-python-command, en el caso de python-mode.el simplemente no funciona, pero de nuevo, sin resultado. ¿Algunas ideas? – YumTum

+1

Si el binario 'python3' está en su sistema' $ PATH', no debería necesitar especificar la ruta completa y explícita del directorio. Trate de poner ese comando dentro de 'python-mode-hook' en su archivo' .emacs', es decir: '(add-hook 'python-mode-hook #' (lambda() (setq py-python-command" python3 ")).)) '. –

+0

Actualmente, estoy usando 'python.el', por lo que puede haber algo que estoy olvidando w/r/t en' python-mode.el'. Es posible que también deba establecer la variable 'py-which-shell' de manera similar, aunque no recuerdo haber tenido que hacerlo cuando trabajé con' python-mode.el'. –

0

Nota pitón-mode.el conoce una jerarquía cómo detectar la versión necesaria

un tinglado precede configuración de py-shell-nombre mientras py-ejecutar-LO-PYTHONVERSION

podría preceder también tinglado para el comando de ser

menú Ver PyExec

0

iniciar una pitón-intérprete

Mx RET pitón

(el intérprete predeterminado)

Mx pythonVERSION

donde VERSION significa cualquier versión instalada

1

Después de que hice lo siguiente, me dieron el comportamiento que: al editar un pitón archivo en emacs, Cc Cp crea un nuevo búfer con un intérprete de Python3.

Añadir a .emacs el archivo siguiente:

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

La razón he intentado esto, fue porque encontré

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

en python.el. Y formulé la hipótesis (i) de que la "pitón" podría sustituirse por "python3" y (ii) que esto anularía la definición en python.el.

Es probable que haya razones por las cuales esto es poco elegante o torpe o por lo demás malo. Soy un newb de emacs.