使用tox导入错误的导入错误

时间:2016-04-03 12:55:25

标签: python django-rest-framework pep8 tox

我正在尝试为django-rest-framework做出贡献,我运行isort后认证文件中的导入是这样的(我添加了import 6):

from __future__ import unicode_literals

import base64

import six
from django.contrib.auth import authenticate, get_user_model
from django.middleware.csrf import CsrfViewMiddleware
from django.utils.translation import ugettext_lazy as _

from rest_framework import HTTP_HEADER_ENCODING, exceptions

当我运行./runtests --lintonly时,它会通过所有测试但是当我运行tox时,它会给我这个错误:

py27-lint runtests: commands[0] | ./runtests.py --lintonly
Running flake8 code linting
flake8 passed
Running isort code checking
ERROR: /home/nitesh/open_source/django-rest-framework/rest_framework/authentication.py Imports are incorrectly sorted.
isort failed: Some modules have incorrectly ordered imports. Fix by running `isort --recursive .`
ERROR: InvocationError: '/home/nitesh/open_source/django-rest-framework/runtests.py --lintonly'

2 个答案:

答案 0 :(得分:1)

从我在REST框架源代码中看到的内容(例如here),six导入了django.utils。将import six替换为from django.utils import six可以解决isort警告:

from __future__ import unicode_literals

import base64

from django.utils import six
from django.contrib.auth import authenticate, get_user_model
from django.middleware.csrf import CsrfViewMiddleware
from django.utils.translation import ugettext_lazy as _

from rest_framework import HTTP_HEADER_ENCODING, exceptions

答案 1 :(得分:1)

我遇到了类似的错误(Imports are incorrectly sorted)。

isort在直接投放时感到高兴,在通过tox投放时失败。 isort抱怨的行是:

import pytest

from my_module import MyThing

isort,直接运行时,知道我的模块my_module是第一方(我自己的)代码,而通过tox它没有。因此,当直接运行时,我很满意pytest导入和导入之间的空行,但是通过tox它不希望看到空行,因为pytest和{ {1}}被解释为第三方导入。

解决方案是将此行添加到我的my_module

setup.cfg