在其他导入与pep8冲突之前需要matplotlib.use.忽略还是修复?

Mau*_*043 8 python pep8 matplotlib

我有一个像这样开始的pythonscript:

#!/usr/bin/env python
import matplotlib
matplotlib.use("Agg")

from matplotlib.dates import strpdate2num
import numpy as np
import pylab as pl
from cmath import rect, phase
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力,但我的编辑抱怨道:E402 module level import not at top of file [pep8].

如果我matplotlib.use("Agg")向下移动,脚本将无法正常工作.

我应该忽略错误吗?或者有办法解决这个问题吗?

编辑:我知道PEP8说这只是一个建议,它可能会被忽略,但我希望有一个很好的方法来初始化模块而不破坏PEP8指南,因为我不认为我可以让我编辑器在每个文件的基础上忽略此规则.

EDIT2:我正在使用Atom和linter-pylama

Bla*_*ift 9

显然,matplotlib现在有一个switch_backend()功能:

import matplotlib.pyplot
# import other modules
matplotlib.pyplot.switch_backend('Agg')
Run Code Online (Sandbox Code Playgroud)

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.switch_backend

但要注意,你冒着爆炸的风险:

切换默认后端.此功能是实验性的,只能用于切换到图像后端.例如,如果你想从交互式ipython会话中运行一堆PostScript脚本,你可能需要在运行之前切换到PS后端,以避免弹出一堆GUI窗口.如果您尝试以交互方式从一个GUI后端切换到另一个GUI后端,则会爆炸.

调用此命令将关闭所有打开的窗口.

它适用于matplotlib1.3.1但不适用于1.0.0.


Mau*_*043 4

该解决方案取决于linter所使用的解决方案。

就我而言,我正在使用pylama

手册建议linter将其添加# noqa到包含您希望抑制的错误的行的末尾。

其他 linter 可能有不同的机制。