web-dev-qa-db-ja.com

ディレクトリに__init__。pyファイルが含まれていない場合、pylintはエラーを発生させます

実行用の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)
$ 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)]

更新

私はこれを試してみて動作させました:

$ 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)
8
JayRizzo

これは、PyLintの既知の未解決の問題です。

ディレクトリ内のすべてのファイルをリント(open)

パッケージではないpythonファイル)のフォルダーをサポートすることを検討してください(重複、閉じています)

残念ながら、議論で見ることができるように、誰もそれに取り組み続けませんでした。

2

この問題は、私たちのいくつかのプロジェクトで発生しました。

これらのプロジェクトの1つでは、ごく最近ビルドが成功しましたが、突然すべてが理由もなく失敗し始めました。最後に成功したビルドまでCIログに移動し、インストールされているすべてのバージョンを正確にコピーしました。そのように構築するとき、すべてがうまくいきました。新しいバージョンは失敗します。

このプロジェクトで成功したビルドは23.02.2019で、失敗したビルドは25.02.2019でした。実質的な変更は導入されていません。以前と同じ状態で実行し、再び失敗します...

これにさらに数時間投資したところ、次のことがわかりました。

  • デバッグ中に、他のエラーが発生し始めました。 astroidreleased version 2.2. in 27.02.2019であることが判明し、これは基本的にpylintを壊しました。 astroidをバージョンに固定すると2.1.この問題は解決します。パッチがリリースされるか、pylintが新しいバージョンの処理を開始するまで、このままにしておきます。これについてはGithubに issue があります。

  • astroidの問題に対処すると、一部のディレクトリに___init__.py_ファイルがないために失敗に戻りました(これらはPython 3.7プロジェクトであり、空の___init__.py_ファイル...)

  • 古い組み合わせが機能し、新しい組み合わせが機能しなかった理由を見つけるために、いくつかの試みが行われました。多くの失敗したビルドの後、[〜#〜] patch [〜#〜]pdatepylint --isort --from-の別の依存関係があることがわかりました。 4.3.4から4.3.525.02.2019でリリースされ、バグが発生しました。バージョン4.3.4にピン留めすると問題なく動作しました。それ以上のものはすべて失敗します。正直なところ、その更新はセマンティックバージョニングのルールに準拠していませんでした(間違いなく[〜#〜]パッチリリースではありません[〜#〜]パッチリリースです...それはおそらく[〜#〜] major [〜#〜]!)。

なぜ正確にisortがこれを引き起こしているのか、私はまだ見つけることができませんでしたが、ここでこれらの調査結果を共有することにしました。これにより、数時間の試行錯誤を節約できます。

TL; DR

これを_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
_
2