我对Python、virtualenvs和Emacs相当陌生。我想尝试将用于检查和格式化代码(flake8和黑色)的python包与我的实际代码库使用的包(例如,numpy等)保持一致。
我的想法是创建两个独立的虚拟主机(使用pyenv),一个用于Emacs扩展所需的包,另一个用于我的其余代码。
我正在使用Emacs软件包elpy;安装后,黑色自动格式化立即工作。甚至当我在我的项目中-文夫和黑是安装在我的emacs。
Flycheck并不是那么幸运;它很难找到flake8可执行文件。在我的Emacs init文件中放置以下内容什么也不做;它似乎是默认的,而是默认为当前虚拟环境中的python可执行文件。
(setq flycheck-python-flake8-executable <PATH>) 不过,我可以通过Emacs交互模式获得适当的可执行文件。
M-x flycheck-set-checker-executable RET python-flake8 RET <PATH>我检查检查器状态,它说‘可以启用’,但是当我使用交互式启用命令时,它会响应‘检查器可能不在这个缓冲区中使用’。
发布于 2020-05-01 14:36:16
我在深夜打了这个问题,没有很好地解释我想要什么。我的目标是让pip freeze不输出与我的项目代码库无关的python包。
经过更多的思考之后,我找到了一种更直接的方法来获得我想要的东西(而不是拥有多个虚拟主机)。
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发布于 2020-05-01 07:45:00
将用于检查和格式化代码(flake8和黑色)的python包保留在我的实际代码库使用的包中。
默认情况下是这样的。black和flake8入口脚本shebang指定绝对python:
$ head -n1 $(which black)
#!/usr/bin/python3.8
$ head -n1 $(which flake8)
#!/usr/bin/python3.8https://stackoverflow.com/questions/61538267
复制相似问题