ホームページ >バックエンド開発 >Python チュートリアル >「sys.path」ハックを使用せずに、Python で兄弟パッケージを効果的にインポートするにはどうすればよいですか?
兄弟パッケージを統合し、さまざまなディレクトリからスクリプトを実行することは、困難な場合があります。このガイドでは、悪名高い sys.path ハッキングを回避する詳細なソリューションを紹介します。
次のディレクトリ構造を検討してください:
├── LICENSE.md ├── README.md ├── api │ ├── __init__.py │ ├── api.py │ └── api_key.py ├── examples │ ├── __init__.py │ ├── example_one.py │ └── example_two.py └── tests │ ├── __init__.py │ └── test_one.py
ステップ 1: pyproject.toml を作成するファイル
ルート ディレクトリに、次の最小限の内容を含む pyproject.toml ファイルを作成します。
[project] name = "myproject" version = "0.1.0" description = "My small project" [build-system] build-backend = "flit_core.buildapi" requires = ["flit_core >=3.2,<4"]
ステップ 2: 仮想環境を使用する (推奨)
分離と依存関係のための仮想環境を作成してアクティブ化する
ステップ 3: プロジェクトをインストールします
pip を使用してプロジェクトを編集可能な状態でインストールします:
pip install -e .
ステップ 4:私のプロジェクトを追加します。 Prefix
相対インポートまたは絶対インポートが失敗するインポートでは、インポート ステートメントに myproject 接頭辞を追加します:
from myproject.api.api import function_from_api
api.py:
def function_from_api(): return 'I am the return value from api.api!'
test_one.py:
from myproject.api.api import function_from_api def test_function(): print(function_from_api()) if __name__ == '__main__': test_function()
tests ディレクトリに移動して実行します。 test_one.py:
python .\myproject\tests\test_one.py
このソリューションは、sys.path を操作せずに兄弟パッケージをインポートするクリーンでポータブルな方法を提供します。 pyproject.toml を利用し、プロジェクトを編集可能にインストールすると、スクリプトへの変更がインストールされたパッケージに自動的に反映されるようになります。このアプローチにより、開発が合理化され、プロジェクト管理が簡素化されます。
以上が「sys.path」ハックを使用せずに、Python で兄弟パッケージを効果的にインポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。