emacs + elpy + pyenv-virtualenv utilise le système python

Si je pensais que les complétions d'elpy étaient gênantes, l'environnement python n'était pas celui de pyenv mais celui du système. Notez que.

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

Un gars intelligent qui fait des fonctionnalités de type IDE dans le développement python.

Etc. Pour les amener à le faire, il semble que le jedi que j'ai installé avec pip install jedi le fera pour moi.

Vérifiez la situation actuelle

Vu avec 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 est 3.5.2, mais pour une raison quelconque, RPC Python est 2.7.12. .. .. 2.7.12, c'est quand j'ai frappé la commande python sur le système, donc pour une raison quelconque, pyenv ne fonctionnait pas bien et je faisais référence à celle sur le système.

Bien sûr, l'environnement dans lequel jedi est placé n'est pas inclus dans le système car il s'agit de ml_test de virtual_env. Par conséquent, la complémentation devient stupide.

Cause

https://github.com/jorgenschaefer/elpy/issues/803 C'est étouffant parce que l'auteur est étouffant.

contre-mesure

https://github.com/gregnewman/emacs.d/blob/master/greg.org Écrivez un script qui définit .python-version pour qu'il soit bien lu par vous-même, en vous référant à. C'était étonnamment facile.

1. Créez le elisp suivant

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. Ajouté à init.el

Ou ajoutez-le à .emacs. 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 utilise le système python
Installer python (pyenv, pyenv-virtualenv)
python (pyenv + pyenv-virtualenv) + installation CentOS7
Construction de l'environnement Python (Windows10 + Emacs)
Système de support de présentation avec Python3