emacs + elpy + pyenv-virtualenv verwendet Systempython

Wenn ich dachte, dass alle Komplemente von elpy umständlich sind, war die Python-Umgebung nicht die von pyenv, sondern die des Systems. Beachten Sie, dass.

elpy? https://elpy.readthedocs.io/en/latest/index.html

Ein kluger Kerl, der IDE-ähnliche Funktionen in der Python-Entwicklung ausführt.

Und so weiter. Um sie dazu zu bringen, scheint es, dass der Jedi, den ich mit pip install jedi eingegeben habe, es für mich tun wird.

Überprüfen Sie die aktuelle Situation

Gesehen mit M-x elpy-config

   1 Elpy Configuration
   2
   3 Virtualenv........: ml_test (/home/harumitsu.nobuta/.pyenv/versions/3.5.2/envs/ml_test)
   4 RPC Python........: 2.7.12 (/home/harumitsu.nobuta/.pyenv/shims/python)
   5 Interactive Python: python (/home/harumitsu.nobuta/.pyenv/shims/python)
   6 Emacs.............: 24.5.1
   7 Elpy..............: 1.15.1
   8 Jedi..............: Not found (0.10.2 available)
   9 Rope..............: Not found (0.10.5 available)
  10 Importmagic.......: Not found (0.1.7 available)
  11 Autopep8..........: Not found (1.3.2 available)
  12 Yapf..............: Not found (0.16.3 available)
  13 Syntax checker....: flake8 (/home/harumitsu.nobuta/.pyenv/shims/flake8)
  14

Virtualenv ist 3.5.2, aber aus irgendeinem Grund ist RPC Python 2.7.12. .. .. 2.7.12 ist, wenn ich den Python-Befehl auf dem System drücke. Aus irgendeinem Grund hat pyenv nicht gut funktioniert und ich habe auf den auf dem System verwiesen.

Natürlich ist die Umgebung, in der jedi platziert wird, nicht im System enthalten, da es sich um ml_test von virtual_env handelt. Daher wird Komplementation dumm.

Ursache

https://github.com/jorgenschaefer/elpy/issues/803 Es ist stickig, weil der Autor stickig ist.

Gegenmaßnahme

https://github.com/gregnewman/emacs.d/blob/master/greg.org Schreiben Sie ein Skript, das die Python-Version so einstellt, dass sie selbst gut liest. Es war überraschend einfach.

1. Erstellen Sie das folgende Elisp

https://github.com/halhorn/.emacs.d/blob/master/elisp/set-pyenv-version-path.el

el:.emacs.d/elisp/set-pyenv-version-path.el


(defun set-pyenv-version-path ()
  "Automatically activates pyenv version if .python-version file exists."
  (f-traverse-upwards
   (lambda (path)
     (let ((pyenv-version-path (f-expand ".python-version" path)))
       (if (f-exists? pyenv-version-path)
           (pyenv-mode-set (s-trim (f-read-text pyenv-version-path 'utf-8))))))))
(provide 'set-pyenv-version-path)

2. Zu init.el hinzugefügt

Oder fügen Sie es zu .emacs hinzu. https://github.com/halhorn/.emacs.d/blob/master/init.el#L193

el:.emacs.d/init.el


(require 'set-pyenv-version-path)
(add-hook 'find-file-hook 'set-pyenv-version-path)
(add-to-list 'exec-path "~/.pyenv/shims")

Recommended Posts

emacs + elpy + pyenv-virtualenv verwendet Systempython
Installieren Sie Python (pyenv, pyenv-virtualenv)
Python (pyenv + pyenv-virtualenv) + CentOS7-Installation
Aufbau einer Python-Umgebung (Windows 10 + Emacs)
Präsentationsunterstützungssystem mit Python3