pylint doesn't nearly catch all pep8 errors
Case in point:
(schaakmat) carmen@carmen-laptop:~/Projects/schaakmat$ flake8
./setup.py:52:80: E501 line too long (89 > 79 characters)
./docs/conf.py:20:1: F401 'os' imported but unused
./docs/conf.py:21:1: F401 'sys' imported but unused
./docs/conf.py:37:5: E128 continuation line under-indented for visual indent
./docs/conf.py:38:5: E128 continuation line under-indented for visual indent
./docs/conf.py:39:5: E128 continuation line under-indented for visual indent
./docs/conf.py:40:5: E128 continuation line under-indented for visual indent
./docs/conf.py:41:5: E128 continuation line under-indented for visual indent
./docs/conf.py:174:1: E303 too many blank lines (3)
./docs/conf.py:196:1: E303 too many blank lines (3)
./src/schaakmat/_position.py:25:1: F403 'from builtins import *' used; unable to detect undefined names
./src/schaakmat/_position.py:25:1: F401 'builtins.*' imported but unused
./src/schaakmat/_position.py:112:80: E501 line too long (89 > 79 characters)
./src/schaakmat/_util.py:26:1: F403 'from builtins import *' used; unable to detect undefined names
./src/schaakmat/_util.py:26:1: F401 'builtins.*' imported but unused
./src/schaakmat/rules.py:25:1: F403 'from builtins import *' used; unable to detect undefined names
./src/schaakmat/rules.py:25:1: F401 'builtins.*' imported but unused
./src/schaakmat/_core.py:28:1: F403 'from builtins import *' used; unable to detect undefined names
./src/schaakmat/_core.py:28:1: F401 'builtins.*' imported but unused
./src/schaakmat/_core.py:72:80: E501 line too long (91 > 79 characters)
./src/schaakmat/_core.py:140:80: E501 line too long (80 > 79 characters)
./src/schaakmat/__init__.py:24:1: F403 'from builtins import *' used; unable to detect undefined names
./src/schaakmat/__init__.py:24:1: F401 'builtins.*' imported but unused
./src/schaakmat/_board.py:26:1: F403 'from builtins import *' used; unable to detect undefined names
./src/schaakmat/_board.py:26:1: F401 'builtins.*' imported but unused
./tests/test_benchmark.py:25:1: F403 'from builtins import *' used; unable to detect undefined names
./tests/test_benchmark.py:25:1: F401 'builtins.*' imported but unused
./tests/test_benchmark.py:40:5: E306 expected 1 blank line before a nested definition, found 0
./tests/test_benchmark.py:50:5: E306 expected 1 blank line before a nested definition, found 0
./tests/test_rules.py:27:1: F403 'from builtins import *' used; unable to detect undefined names
./tests/test_rules.py:64:35: F405 'INITIAL_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:82:39: F405 'EN_PASSANT_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:91:35: F405 'KING_ROOK_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:113:35: F405 'KING_ROOK_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:142:35: F405 'QUEEN_BISHOP_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:182:35: F405 'QUEEN_BISHOP_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:207:35: F405 'KNIGHT_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:232:39: F405 'CASTLING_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:250:21: F405 'CASTLING_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:267:25: F405 'CASTLING_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:276:35: F405 'STALEMATE_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:282:17: F405 'STALEMATE_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:293:43: F405 'EN_PASSANT_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:306:21: F405 'PAWN_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:316:17: F405 'PROMOTION_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:332:35: F405 'INITIAL_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:339:36: F405 'INITIAL_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:343:43: F405 'PROMOTION_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:349:47: F405 'PROMOTION_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:355:43: F405 'CASTLING_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:360:80: E501 line too long (80 > 79 characters)
./tests/test_rules.py:361:43: F405 'EN_PASSANT_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:369:43: F405 'CASTLING_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_rules.py:374:80: E501 line too long (80 > 79 characters)
./tests/test_rules.py:375:43: F405 'CASTLING_BOARD' may be undefined, or defined from star imports: builtins
./tests/test_schaakmat.py:27:1: F403 'from builtins import *' used; unable to detect undefined names
./tests/test_schaakmat.py:27:1: F401 'builtins.*' imported but unused
./tests/test_schaakmat.py:117:80: E501 line too long (89 > 79 characters)
./tests/test_schaakmat.py:129:80: E501 line too long (94 > 79 characters)
./tests/test_schaakmat.py:157:22: E711 comparison to None should be 'if cond is not None:'
./tests/test_schaakmat.py:312:5: E303 too many blank lines (2)
./tests/test_schaakmat.py:337:5: E303 too many blank lines (2)
./tests/test_schaakmat.py:416:72: E251 unexpected spaces around keyword / parameter equals
./tests/test_schaakmat.py:425:79: E251 unexpected spaces around keyword / parameter equals
./tests/test_schaakmat.py:456:77: E251 unexpected spaces around keyword / parameter equals
./tests/test_schaakmat.py:470:80: E501 line too long (83 > 79 characters)
./tests/test_schaakmat.py:470:84: E251 unexpected spaces around keyword / parameter equals
./tests/test_schaakmat.py:485:75: E251 unexpected spaces around keyword / parameter equals
./tests/test_schaakmat.py:493:80: E501 line too long (81 > 79 characters)
./tests/test_schaakmat.py:493:82: E251 unexpected spaces around keyword / parameter equals
./tests/test_schaakmat.py:515:77: E251 unexpected spaces around keyword / parameter equals
./tests/conftest.py:29:1: F403 'from builtins import *' used; unable to detect undefined names
./tests/conftest.py:29:1: F401 'builtins.*' imported but unused
./tests/conftest.py:41:1: E303 too many blank lines (3)
./util/random_game.py:30:1: F403 'from builtins import *' used; unable to detect undefined names
./util/random_game.py:30:1: F401 'builtins.*' imported but unused
Introducing flake8 to the suite is an option, but they're sometimes reported to conflict. I suggest letting flake8 take precedence over pylint, because pylint is a hundredfold easier to configure.