ホームページ >バックエンド開発 >Python チュートリアル >モジュールをスクリプトとして実行するときに、Python パッケージで相対インポートを処理するにはどうすればよいですか?
同じディレクトリ内の別のファイルから関数をインポートしようとする場合、from .mymodule import myfunction または from mymodule import myfunction を使用すると、エラーが発生します。その理由は、インポートされる関数を含むモジュールがパッケージ内にあるかどうかにあります。
相対インポートは、モジュールがパッケージ内にある場合に機能します。パッケージを作成するには、モジュールが含まれるディレクトリに __init__.py ファイルが存在する必要があります。ただし、場合によってはモジュールをスクリプトとして実行できるようにすることも重要です。
複数のモジュールとメイン スクリプトを含むパッケージの一般的なレイアウトは次のとおりです。以下:
mypackage/
内mymodule.py:
# Exported function def as_int(a): return int(a) # Test function for module def _test(): assert as_int('1') == 1 if __name__ == '__main__': _test()
myothermodule.py 内:
# Import exported function from the mymodule from .mymodule import as_int # Exported function def add(a, b): return as_int(a) + as_int(b) # Test function for module def _test(): assert add('1', '1') == 2 if __name__ == '__main__': _test()
main.py 内:
# Import exported function from myothermodule from mypackage.myothermodule import add def main(): print(add('1', '1')) if __name__ == '__main__': main()
main.py または mypackage/mymodule.py を実行すると、コードは問題なく実行されます。ただし、mypackage/myothermodule.py を実行しようとすると、使用された相対インポート (.mymodule import as_int から) に関連するエラーが発生します。
これに対処するには、2 つの代替アプローチがあります。 :
以上がモジュールをスクリプトとして実行するときに、Python パッケージで相対インポートを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。