2010-02-20 11 views
11

Oggi ho cercato di portare più delle modalità relative a Python nella configurazione di my Emacs ma non ho avuto molta fortuna.Specificare l'interprete python da virtualenv in emacs

prima cosa che ho notato è che a seconda di come Emacs è lanciato (terminale vs dal desktop), l'interprete decide di utilizzo è diverso.

  • avviato dal menu KDE: M-! che pitone/usr/bin/python

  • lanciato dal terminale: M-! che pitone~/local/bin/python

posso sorta di accettare questo da quando ho il mio .bashrc aggiungendo ~/local/bin al percorso e immagino KDE ignora che di default. Posso aggirare questo, tuttavia quello che non capisco è quindi se io attivare un virtualenv, mi aspetterei M-! che python per puntare a ~/project.env/bin/python tuttavia punta ancora a ~/local/bin/python.

Così quando Mx py-shell, ottengo ~/local/bin/python quindi se provo a Mx py-eseguire-buffer su un modulo che risiede in un pacchetto nella virtualenv, py-shell si lamenterà di non conoscere i moduli anche nel virtualenv.

Impostazione py-python-comando a "~/project.env/bin/python" sembra non avere effetto dopo che tutto è stato caricato.

Quindi immagino che il punto cruciale della mia domanda sia: come si ottiene tutto lo roba relativa a python relativa a emacs che punta all'interprete giusto?

risposta

8

Quindi sembra che python-shell faccia la cosa giusta prendendo le impostazioni dell'ambiente, mentre py-shell no. python-shell è fornito da python.el e py-shell è fornito da python-mode.el, ci sono segnalazioni di bug ecc relative a questo, quindi per ora non userò py-shell. Ho pensato di chiudere il ciclo su questo nel caso in cui la macchina di Google consideri questo oggetto di alto rango per un motivo o per un altro.

+3

Una pagina utile sull'utilizzo di virtualenv con Emacs (poiché ho trovato questa pagina tramite Google): http: // jesselegg.it/archives/2010/03/14/emacs-python-programmers-2-virtualenv-ipython-daemon-mode/ –

+0

(link aggiornato del commento sopra: http://jesselegg.com/archives/emacs-python-programmers -2-virtualenv-ipython-daemon-mode /) – semente

+0

Specchio: https://web.archive.org/web/20120120144128/http://jesselegg.com:80/archives/2010/03/14/emacs-python -programmers-2-virtualenv-ipython-daemon-mode/ – xtreak

4

C'è un virtualenv mode for Emacs. Richiede Emacs 23.1 o versione successiva.

Questo è un modo minore per impostare l'ambiente virtuale per Python shell utilizzando virtualenv e supporta sia pitone mode.el e python.el.

+0

Ma l'uso di tale strumento preclude l'uso di virtualenvwrapper – PuercoPop

+3

Il tuo post si riferisce a [mio vecchio pacchetto virtualenv] (https://github.com/aculich/virtualenv.el) che non mantengo più; ci sono almeno 3 nuovi pacchetti attivamente mantenuti: [virtualenvwrapper] (https://github.com/porterjamesj/virtualenvwrapper.el), [pyvenv] (https://github.com/jorgenschaefer/pyvenv), [python- ambiente] (https://github.com/tkf/emacs-python-environment) – aculich