[英]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 包
默认情况下是这种方式。 black
和flake8
入口脚本 shebangs 指定绝对 python 路径:
$ head -n1 $(which black)
#!/usr/bin/python3.8
$ head -n1 $(which flake8)
#!/usr/bin/python3.8
我在深夜输入了这个问题,并没有很好地解释我想要什么。 我的目标是让pip freeze
而不是 output python 包与我的项目代码库无关。
在考虑了更多之后,我找到了一种更直接的方法来获得我想要的东西(而不是拥有多个 virtualenvs)。
在项目的 virtualenv 中安装flake8
(或其他任何东西)。
使用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.