Emacs flycheck 和 python virtualenv
Emacs flycheck and python virtualenv
我对 Python virtualenvs 和 Emacs 还很陌生。我想尝试从我的实际代码库使用的包(例如 numpy 等)中保留我用于检查和格式化代码(flake8 和 black)的 python 包。
我的想法是创建两个单独的 virtualenvs(使用 pyenv),一个用于 Emacs 扩展所需的包,另一个用于我的其余代码。
我正在使用 Emacs 包 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>
我检查了检查器状态,它说 'it can be enabled' 但是当我使用交互式启用命令时它响应 'checker may not be used in this buffer'。
keep the python packages I use for checking and formatting code (flake8 and black) from the packages my actual code base uses
默认是这样的。 black
和 flake8
入口脚本 shebangs 指定绝对 python 路径:
$ head -n1 $(which black)
#!/usr/bin/python3.8
$ head -n1 $(which flake8)
#!/usr/bin/python3.8
我深夜打了这个问题,没有很好地解释我的意思。我的目标是 pip freeze
不输出 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
我对 Python virtualenvs 和 Emacs 还很陌生。我想尝试从我的实际代码库使用的包(例如 numpy 等)中保留我用于检查和格式化代码(flake8 和 black)的 python 包。
我的想法是创建两个单独的 virtualenvs(使用 pyenv),一个用于 Emacs 扩展所需的包,另一个用于我的其余代码。
我正在使用 Emacs 包 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>
我检查了检查器状态,它说 'it can be enabled' 但是当我使用交互式启用命令时它响应 'checker may not be used in this buffer'。
keep the python packages I use for checking and formatting code (flake8 and black) from the packages my actual code base uses
默认是这样的。 black
和 flake8
入口脚本 shebangs 指定绝对 python 路径:
$ head -n1 $(which black)
#!/usr/bin/python3.8
$ head -n1 $(which flake8)
#!/usr/bin/python3.8
我深夜打了这个问题,没有很好地解释我的意思。我的目标是 pip freeze
不输出 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