Emacs flycheck и python virtualenv - PullRequest
0 голосов
/ 01 мая 2020

Я довольно новичок в Python virtualenvs и Emacs. Я хотел попробовать и сохранить пакеты python, которые я использую для проверки и форматирования кода (flake8 и black), из пакетов, которые использует моя фактическая база кода (например, numpy et c.).

My предполагалось создать два отдельных virtualenv (с pyenv), один для пакетов, необходимых для расширений Emacs, и другой для остальной части моего кода.

Я использую пакет Emacs elpy; после установки blacken автоформатирование по черному сработало сразу. Даже когда я был в моем проекте venv, в моем emacs-venv был установлен черный цвет.

Flycheck не был таким удачливым; ему трудно найти исполняемый файл flake8. Помещение следующего в мой файл инициализации Emacs ничего не делает; вместо этого по умолчанию вместо этого используется исполняемый файл python в моем текущем virtualenv.

(setq flycheck-python-flake8-executable <PATH>) 

Однако я могу получить подходящий исполняемый файл, пройдя через интерактивный режим Emacs.

M-x flycheck-set-checker-executable RET python-flake8 RET <PATH>

I проверьте состояние контролера, и он говорит, что «он может быть включен», но когда я использую интерактивную команду включения, он отвечает, что «контролер не может использоваться в этом буфере».

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Я напечатал этот вопрос поздно ночью и не смог объяснить, что я хотел. Моя цель состояла в том, чтобы pip freeze не выводил python пакетов, не связанных с кодовой базой моего проекта.

Подумав об этом больше, я нашел более прямой способ получить то, что хотел (вместо нескольких virtualenvs) .

  1. Установите flake8 (или что-нибудь еще) в virtualenv вашего проекта.

  2. Используйте pigar для создания списка требования, основанные на импорте.

Вот короткий Makefile; make freeze.

# Use pigar to generate 'pip freeze' requirements based on imports, no comments.
freeze:
    pigar -p .tmpreqs --without-referenced-comments
    tail -n +3 .tmpreqs > requirements.txt
    rm .tmpreqs
0 голосов
/ 01 мая 2020

сохраните пакеты python, которые я использую для проверки и форматирования кода (flake8 и black) из пакетов, которые использует моя фактическая база кода

По умолчанию это так. black и flake8 Шебанги сценария ввода указывают абсолютный python путь:

$ head -n1 $(which black)
#!/usr/bin/python3.8
$ head -n1 $(which flake8)
#!/usr/bin/python3.8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...