Python プログラミングの領域では、コードを効果的に編成することが不可欠です。サブディレクトリはモジュール性を維持するための優れた方法として機能しますが、これらのサブディレクトリからファイルをインポートする場合、予期せぬハードルに遭遇する可能性があります。
次のシナリオを考えてみましょう。/ に tester.py という名前のファイルがあるとします。プロジェクトディレクトリ。 /project ディレクトリ内には lib というサブディレクトリがあり、このサブディレクトリには BoxTime.py という名前の別のファイルが含まれています。目的は、BoxTime を tester.py スクリプトにインポートすることです。
最初のアプローチでは、次のコマンドを使用して BoxTime をインポートします。
import lib.BoxTime
ただし、この試みでは次のエラー メッセージが表示されます:
Traceback (most recent call last): File "./tester.py", line 3, in <module> import lib.BoxTime ImportError: No module named lib.BoxTime
Undeterred, you search for a solution to Bridgeメイン スクリプトとサブディレクトリにあるファイルの間のギャップ。
解決策はパッケージのドキュメント (セクション 6.4) にあります。ドキュメントによると、Python では __init__.py という名前の空のファイルがサブディレクトリに存在する必要があります。
この例の場合、lib ディレクトリ内に空の __init__.py ファイルを作成する必要があります。この微妙な調整により、Python はサブディレクトリをパッケージとして認識できるようになり、ファイルをシームレスにインポートできるようになります。
したがって、__init__.py ファイルの重要性を見落とさないでください。これはゲートキーパーとして機能し、サブディレクトリからのファイルのインポートを容易にします。
空の __init__.py ファイルを作成すると最初の問題は解決しますが、サブディレクトリからファイルをインポートするときに考慮すべき別の側面があります。サブディレクトリ。 Python では、モジュール名の前に lib.BoxTime などのディレクトリ パスを付ける必要があります。
または、次の構文を使用してモジュールにエイリアスを割り当てることもできます。
import lib.BoxTime as BT
This次のように、BT エイリアスを使用してモジュールを簡単に呼び出すことができます。 BT.bt_function().
これらのガイドラインに従えば、インポートの問題を克服し、サブディレクトリから Python プロジェクトへのファイルのシームレスな統合が保証されます。
以上がPython でサブディレクトリからファイルをインポートする方法: `__init__.py` が必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。