Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I make flycheck use virtualenv

I have just happily configured emacs with autocompletion via jedi and syntax check via flycheck and virtualenvs created within bootstrap. It all seems to work.

I'd like to add the ability to use flycheck-pylint (to get errors in import) but I'm not able to make it work. Even if I change the virtualenv by hand (M-x: pyvenv-activate RET path-to-my-venv) I still see lots of import errors that come from a wrong virtualenv used.

My current initialization code:

(require 'pyvenv)
(add-hook 'after-init-hook #'global-flycheck-mode)
(defun set-flake8-executable ()
  (pyvenv-activate (get-current-buffer-venv))
  (flycheck-set-checker-executable (quote python-flake8)
               (get-current-buffer-flake8)))

where "get-current-buffer-venv" and "get-current-buffer-flake8" are functions that implement my specific setup and are working correctly.

How can I change the interpreter used?

like image 675
Alessandro Dentella Avatar asked Jul 16 '15 00:07

Alessandro Dentella


1 Answers

Poking at the problem today, I found another solution (which works with current version of flycheck, as of Jun 2020).

Just create .dir-locals.el with appropriate settings for given project. Like:

((python-mode
  (flycheck-python-flake8-executable . "/home/marcin/.virtualenvs/adgv/bin/python")
  (flycheck-python-pylint-executable . "/home/marcin/.virtualenvs/adgv/bin/python")))

(creating the file with M-x add-dir-local-variable works too, but remember to add double quotes around the command)

like image 79
Mekk Avatar answered Oct 10 '22 02:10

Mekk