- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这是我在验证期间 flake8
的输出:
Traceback (most recent call last):
File "/usr/local/bin/flake8", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/flake8/main.py", line 25, in main
flake8_style = get_style_guide(parse_argv=True, config_file=DEFAULT_CONFIG)
File "/usr/local/lib/python2.7/dist-packages/flake8/engine.py", line 244, in get_style_guide
options.exclude.extend(pep8.normalize_paths(EXTRA_EXCLUDE))
AttributeError: 'module' object has no attribute 'normalize_paths'
为什么我不能使用它?
最佳答案
这个问题可以通过使用最新版本的 flake8
来解决,特别是 flake8 >= 2.6.0
不依赖于 pep8
模块(Source)。您可以通过 pip 安装它来做到这一点:
$ pip install flake8
应该安装最新版本(目前为 3.5.0)。
此错误告诉您 flake8 确实找到了名为 pep8
的模块,但该模块不包含名为 normalize_paths
的函数。这可能有多种原因,包括安装损坏(应该通过重新安装 flake 和 pep8 来修复)和路径中的 pep8
版本冲突。当您 modify your sys.path
时,后者可能会发生和/或以某种方式设法将名为 pep8 的自己的模块放入您的路径中。这可以小到一个名为 pep8 的文件夹和一个 __init__.py
,如本例所示:
$ mkdir /home/me/miniconda3/envs/fl8/lib/python2.7/site-packages/pep8
$ touch /home/me/miniconda3/envs/fl8/lib/python2.7/site-packages/pep8/__init__.py
$ flake8 foo.py
Traceback (most recent call last):
File "/home/me/miniconda3/envs/fl8/bin/flake8", line 7, in <module>
from flake8.main import main
File "/home/me/miniconda3/envs/fl8/lib/python2.7/site-packages/flake8/main.py", line 8, in <module>
from flake8.engine import get_parser, get_style_guide
File "/home/me/miniconda3/envs/fl8/lib/python2.7/site-packages/flake8/engine.py", line 11, in <module>
from flake8.reporter import (multiprocessing, BaseQReport, FileQReport,
File "/home/me/miniconda3/envs/fl8/lib/python2.7/site-packages/flake8/reporter.py", line 18, in <module>
class BaseQReport(pep8.BaseReport):
AttributeError: 'module' object has no attribute 'BaseReport'
如您所见,此错误与您的略有不同,但属于同一类型。这可能是由于 pep8
模块中的微小变化所致。
要查看是否一切顺利,您可以检查 python 路径的内容和 pep8
模块的位置。
$ python
>>> import pep8
>>> pep8.__file__
/home/me/miniconda3/envs/fl8/lib/python3.5/site-packages/pep8.py
这会告诉您您的 Python 使用的是哪个 pep8
模块。所以这应该指向您的 Python 发行版中的某处,而不是指向您的本地文件夹之一。如果它确实指向您的文件,这是您的 sys.path
的问题,python 在导入期间检查的路径列表:
>>> import sys
>>> import pprint # this is only used to make it print pretty
>>> pprint.pprint(sys.path)
['',
'/home/me/miniconda3/envs/dptest/lib/python35.zip',
'/home/me/miniconda3/envs/dptest/lib/python3.5',
'/home/me/miniconda3/envs/dptest/lib/python3.5/plat-linux',
'/home/me/miniconda3/envs/dptest/lib/python3.5/lib-dynload',
'/home/me/miniconda3/envs/dptest/lib/python3.5/site-packages',
'/home/me/miniconda3/envs/dptest/lib/python3.5/site-packages/setuptools-27.2.0-py3.5.egg']
这显示了 Python 在其中搜索 pep8
模块的所有文件夹(从上到下)。因此,如果其中有一条路径确实指向一个您不希望 python 包存在的位置,那可能就是罪魁祸首。
(进一步阅读:reddit thred)
如果使用最新版本不能解决您的问题,您可以尝试使用 conda 创建一个虚拟环境,您可以在其中安装 flake8
及其所有依赖项,以避免与您的其他部分交互 python 安装。下载conda后新建环境(我的是fl8),激活,安装flake8,使用:
$ conda create -n fl8 python=2.7 # if you insist on python 2.7
$ source activate fl8
(fl8) $ pip install flake8
[...]
$ flake8 foo.py
如果您从命令行启动 Emacs,它会使用与您启动它的 shell 相同的环境。因此,为了从环境中使用 flake8,如上,您必须首先激活环境。我在 this tutorial 之后用 elpy 设置了我的 Emacs .为了让它与 conda 一起工作,我还在根环境中安装了 flake 等。
如果您以不同的方式启动 Emacs(例如在 Ubuntu 上使用 M-F2 或从开始菜单),环境可能无法正常工作。我还没有完全理解如何解决这个问题。
关于python - Flake8 属性错误 : 'module' object has no attribute 'normalize_paths' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37544941/
我正在使用“protractor-flake@2.5.1”版本并运行我的测试。在我的测试中,很少有测试失败,但它再次运行所有测试。除了 Allure 报告之外,我没有使用任何自定义报告器下面是我用来运
我是 Android 新手,我正在尝试将 9 Old Androids flakes 演示实现到我的应用程序中。但是,当我将图像资源从演示使用的图像更改为我选择的应用程序之一时,应用程序崩溃并显示 I
如果我查看 haskell.nix 提供的输出从 M1 计算机上剥落,它开始构建 ghc-8.8.4 等。 ❯ nix flake show github:input-output-hk/haskel
如果我查看 haskell.nix 提供的输出从 M1 计算机上剥落,它开始构建 ghc-8.8.4 等。 ❯ nix flake show github:input-output-hk/haskel
我无法解决 flake8 SyntaxError,尽管代码执行得很好。 没有注释的代码 import math def answer(str_n): sume = ((str_n * (str
当我在 emacs 中打开 python 文件时,收到以下错误消息: Flymake: Configuration error has occured while running (flake8 >.
max-statements在 Javascript 中,ESLint 为小型、模块化和可读的函数提供了非常好的执行。我希望在 Python Flake8 lint 中找到类似的东西,但到目前为止我还
我正在创建一个 WordPress 插件,但需要连接到 Xero 的 API。 Xero 建议使用 Composer 插件 xero-php-oauth2 所以我设置我的 WP 插件来使用 Compo
问题概述: 在我的项目的主脚本中,gettext 安装函数 _(),该函数在其他模块中用于翻译(如 print(_('Something翻译'))). 如 the doc 所述: the _() fu
我在行“added_parts = new_part_set[(new_part_set["duplicate"] == False) & (new_part_set["version"] ==
我是一名优秀的程序员,十分优秀!