我正在运行<div class="horizontal-ruler">
<div class="h-ruler-first-line"></div><!--
--><div class="ruler-unit">24"</div><!--
--><div class="h-ruler-second-line"></div>
</div>
而且我是emacs的新手。我在Python 2.7中使用emacs24
检查了一些代码。
当我检查语法时,我得到:
flycheck
我理解error F821 undefined name 'xrange' (python-flake8)
不在Python3中,但在这里我使用的是Python 2.7。我猜它被配置为在Python 3上运行,因为xrange
也会产生相同的错误。
我该如何解决这个问题?
答案 0 :(得分:0)
Flycheck并不关心Python 2和Python 3之间的区别。它运行它在flake8
中找到的第一个exec-path
可执行文件,在您的情况下,它显然是安装了一个flake8对于Python 3。
您需要为Python 2安装flake8并将Flycheck指向该可执行文件,方法是将目标目录放在exec-path
或M-x flycheck-set-checker-executable
中。
我建议为您的项目使用专用的Python 2 virtualenv,并在Python缓冲区中创建Emacs并将python-shell-virtualenv-root
设置为该目录(例如使用Directory Variables)。然后你可以将exec-path
指向那个virtualenv。只需一点custom Emacs Lisp,您甚至可以实现自动化。
答案 1 :(得分:0)
我正在努力解决同样的问题,并建议使用我的解决方案:https://github.com/rmuslimov/flycheck-local-flake8。这是微不足道的 - 它会迫使 flycheck 使用你的virtualenv中正确的 flake8 可执行文件。
我建议为你工作的每个python项目添加setup.cfg
。 Flake8有一些可以在那里定义的环境变量。例如,这是我的:
[metadata]
name=fastttrace
version=release.5.9.0
[flake8]
exclude = tests/*, migrations/*
ignore = D100,D101,D102,D103,D205,D400,E731
import-order-style = google
max-complexity = 15
它允许你为每个项目设置单独的flake8规则并将它们存储在repo中,这是与其他开发者共享的便捷方式。