Python 3.x 如果目录不';t包含uuu init_uuuu.py文件
我的文件夹只包含用于执行的python脚本。没有必要保留Python 3.x 如果目录不';t包含uuu init_uuuu.py文件,python-3.x,pylint,Python 3.x,Pylint,我的文件夹只包含用于执行的python脚本。没有必要保留\uuuu init\uuuu.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__.
\uuuu init\uuuu.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)
这是PyLint的已知公开发行: (打开) (重复,关闭) 不幸的是,正如我们在讨论中看到的那样,没有人继续进行这方面的工作
$sw\u vers
产品名称:Mac OS X
产品版本:10.13.6
构建版本:17G65
$pylint--版本
pylint 2.1.1
星体2.0.3
Python 3.7.0(默认值,2018年7月23日,20:22:55)
[Clang 9.1.0(Clang-902.0.39.2)]
更新
我通过尝试实现了这一目标:
或者尝试:
让整个事情顺利进行。
这个问题出现在我们的一些项目中 在其中一个项目中,我们有一个非常成功的构建,但是突然间一切都无缘无故地失败了。我们查看了上次成功构建的CI日志,复制了所有已安装内容的确切版本。这样建造时,一切正常。新版本将失败 该项目的成功构建时间为2019年2月23日,失败构建时间为2019年2月25日。没有引入实质性的变化。正在以与以前相同的状态运行,再次失败 我们在这方面又投入了几个小时,我们发现:
- 调试时,其他错误开始发生。结果是
版本2.2.0在2019年2月27日,这基本上破坏了astroid
。将pylint
钉回版本2.1.0解决了此问题。我们会一直这样做,直到他们发布补丁或者astroid
开始处理新版本。关于这一点,Github上有一条消息pylint
- 解决了
问题后,我们又回到了由于某些目录中缺少astroid
文件而导致的故障(这些是Python 3.7项目,我们不需要空的\uuuu init\uuuuuuuuuupy
文件…)\uuu init\uuuuuuuuuuupy
- 为了找出旧组合有效而新组合无效的原因,进行了多次尝试。在大量失败的构建之后,我们发现另一个
--pylint
--从4.3.4到4.3.5,于25.02.2019发布的补丁引入了该漏洞。将其锁定到4.3.4版效果很好。任何高于它的东西都会失败。老实说,该更新没有遵循语义版本控制的规则(它肯定不是一个补丁版本……更可能是一个主要版本!)isort
isort
会导致这种情况,我还没有找到,但我决定在这里分享这些发现,这样您就可以节省几个小时的尝试和错误
TL;博士:
将此添加到您的requirements.txt
(至少在下一版本pylint
之前):
我提出了此解决方案(在Windows上不起作用):
因此,这将包括
/app
目录中的所有.py
文件以及/app
目录中的所有目录作为参数,这些目录的根目录中包含一个\uuu init\uuuuu.py
文件。grep管道正在删除/app
中以点开头的所有目录名。pylint检查脚本,而不是目录。只需添加到@JayRizzo的回复中,如果您只想在python文件上运行pylint,请使用$pylint/path/to/folder/*.py
如果您不使用它,它将在目录中的所有文件上运行(例如:README.md)。您不想在非python文件上运行pylint。是的,您是正确的@Darshak。我忘了添加它。我会在稍后回家时更新。当输入命令为:pylint--output format=text.| tee./pylint/pylint.log | | pylint exit$?
?@VincentBénet时如何执行此操作:pylint--output format=text*.py tee./pylint/pylint.log | | pylint exit$
一个看起来更好的命令:find-api/python/cli-name“*.py”| xargs-pylint
。如果python文件位于目录层次结构中,这种方式将起作用。看起来,我们也需要降级pylint?因为它会错误地显示以下消息:错误:pylint 2.5.2的需求astroid=2.4.0,但您的astroid 2.1.0不兼容。我不确定。我不记得最近有问题我认为当您使用最新版本时,当前的软件包集是兼容的
$ cd /app
$ pylint *.py
$ pylint /path/to/app/*.py
...
Report
======
************* Module <yourmodname>
...
X statements analysed.
Statistics by type
------------------
+---------+-------+-----------+-----------+------------+---------+
|type |number |old number |difference |%documented |%badname |
+=========+=======+===========+===========+============+=========+
...
$ 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)
# 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
pylint $(echo -n /app/*.py && echo -n ' ' && find /app -type d -maxdepth 1 -exec test -e '{}'/__init__.py \; -print | grep -v '^/app/\.')