我有一个只包含python脚本的文件夹可供执行.没有必要保留__init__.py文件.那我可以忽略这样的错误吗?
$ pylint /app
Using config file /app/pylintrc
*************
F: 1, 0: error while code parsing: Unable to load file /app/__init__.py:
[Errno 2] No such file or directory: '/app/__init__.py' (parse-error)
Run Code Online (Sandbox Code Playgroud)
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G65
$ pylint --version
pylint 2.1.1
astroid 2.0.3
Python 3.7.0 (default, Jul 23 2018, 20:22:55)
[Clang 9.1.0 (clang-902.0.39.2)]
Run Code Online (Sandbox Code Playgroud)
尝试通过以下方式实现此目的:
$ cd /app
$ pylint *.py
Run Code Online (Sandbox Code Playgroud)
或尝试:
$ pylint /path/to/app/*.py
Run Code Online (Sandbox Code Playgroud)
让整个事情发挥作用.
...
Report
======
************* Module <yourmodname>
...
X statements analysed.
Statistics by type
------------------
+---------+-------+-----------+-----------+------------+---------+
|type |number |old number |difference |%documented |%badname |
+=========+=======+===========+===========+============+=========+
...
Run Code Online (Sandbox Code Playgroud)
我试过这样做:
$ pylint .
************* Module .
__init__.py:1:0: F0010: error while code parsing: Unable to load file
__init__.py:
[Errno 2] No such file or directory: '__init__.py' (parse-error)
Run Code Online (Sandbox Code Playgroud)
这是 PyLint 的一个已知未决问题:
lint 目录中的所有文件 (打开)
考虑支持一个不是包的python文件文件夹 (重复,关闭)
不幸的是,正如我们在讨论中看到的那样,没有人继续研究它。
这个问题在我们的一些项目中出现过。
在其中一个项目中,我们最近进行了一次成功的构建,但突然一切都开始无缘无故地失败。我们查看了上次成功构建的 CI 日志,复制了安装的所有内容的确切版本。当以这种方式构建时,一切都正常。新版本将会失败。
该项目的成功构建时间为2019 年 2 月 23 日,失败的构建时间为2019 年 2 月 25 日。没有引入实质性改变。以与之前相同的状态运行,再次失败......
我们又投入了几个小时,发现:
在调试时,其他错误开始发生。事实证明,在2019 年 2 月 27日astroid 发布了2.2.0版本,这基本上已经崩溃了。固定回版本2.1.0解决了这个问题。我们将保持这种状态,直到他们发布补丁或开始处理新版本。Github 上有一个关于此的问题。pylintastroidpylint
问题astroid解决后,我们又回到了由于__init__.py某些目录中缺少文件而失败的情况(这些是 Python 3.7 项目,我们不需要空__init__.py文件...)
我们进行了多次尝试来找出为什么旧组合有效而新组合无效的原因。经过多次失败的构建后,我们发现另一个依赖项的PATCH 更新pylint——isort从4.3.4到4.3.5(于2019 年 2 月 25 日发布)引入了该错误。将其固定回 4.3.4 版本效果很好。任何高于它的都会失败。老实说,该更新没有遵循语义版本控制的规则(它绝对不是补丁版本......它更有可能是一个重大版本!)。
到底为什么isort会造成这种情况,我还没有找到,但我决定在这里分享这些发现,这样您就可以节省几个小时的试验和错误。
长话短说:
将其添加到您的requirements.txt(至少直到下一个版本pylint):
# astroid 2.2.0 seems to break everything in pylint
astroid==2.1.0
# isort above 4.3.4 introduces the "__init__.py not found" issue
isort==4.3.4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2656 次 |
| 最近记录: |