繁体   English   中英

Emacs flycheck 和 python virtualenv

[英]Emacs flycheck and python virtualenv

我对 Python virtualenvs 和 Emacs 还很陌生。 我想尝试从我的实际代码库使用的包(例如 numpy 等)中保留用于检查和格式化代码(flake8 和黑色)的 python 包。

我的想法是创建两个单独的 virtualenvs(使用 pyenv),一个用于 Emacs 扩展所需的包,另一个用于我的代码的 rest。

我正在使用 Emacs package elpy; 安装 blacken 后,black 的自动格式化立即生效。 即使当我在我的 project-venv 中并且黑色安装在我的 emacs-venv 中时。

Flycheck 就没有那么幸运了。 它很难找到 flake8 可执行文件。 将以下内容放入我的 Emacs 初始化文件中没有任何作用; 它似乎默认为我当前 virtualenv 中的 python 可执行文件。

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

但是,我可以通过 Emacs 交互模式获得正确的可执行文件。

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

我检查检查器状态,它说“可以启用”,但是当我使用交互式启用命令时,它会响应“检查器可能未在此缓冲区中使用”。

从我的实际代码库使用的包中保留我用于检查和格式化代码(flake8 和黑色)的 python 包

默认情况下是这种方式。 blackflake8入口脚本 shebangs 指定绝对 python 路径:

$ head -n1 $(which black)
#!/usr/bin/python3.8
$ head -n1 $(which flake8)
#!/usr/bin/python3.8

我在深夜输入了这个问题,并没有很好地解释我想要什么。 我的目标是让pip freeze而不是 output python 包与我的项目代码库无关。

在考虑了更多之后,我找到了一种更直接的方法来获得我想要的东西(而不是拥有多个 virtualenvs)。

  1. 在项目的 virtualenv 中安装flake8 (或其他任何东西)。

  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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM