ホームページ >バックエンド開発 >Python チュートリアル >兄弟パッケージからインポートするときに「sys.path」ハッキングを回避するにはどうすればよいですか?

兄弟パッケージからインポートするときに「sys.path」ハッキングを回避するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 12:10:13200ブラウズ

How to Avoid `sys.path` Hacks When Importing from Sibling Packages?

兄弟パッケージのインポートのアドレス指定


コマンド ラインからスクリプトを実行する場合、兄弟パッケージからモジュールをインポートすると、多くの場合問題が発生することがあります。これらの問題を軽減するために、不器用な sys.path.insert ハックの必要性を排除する代替ソリューションを紹介します。


アプローチ


コードを単一のフォルダーにパッケージ化し、次のように構造化します。以下:


<br>└── myproject</p>
<pre class="brush:php;toolbar:false">├── api
│   ├── api_key.py
│   ├── api.py
│   └── __init__.py
├── examples
│   ├── example_one.py
│   ├── example_two.py
│   └── __init__.py
├── LICENCE.md
├── README.md
└── tests
    ├── __init__.py
    └── test_one.py


さらに、pyproject を作成します。ルート フォルダー内の toml ファイルに記述します。 package.


パッケージのインストール


パッケージをインポートできるようにするには、pip:

pip install -e .

インポートの処理


パッケージからモジュールをインポートするとき、test_one.py に示すように、インポートの前に myproject. を付けます:< ;/p>

myproject.api.api インポートからfunction_from_api

このプレフィックスは、pyproject.toml ファイルと pip install がないと機能しないインポートにのみ必要であることに注意してください。


スクリプト


すべての必要な設定が完了したら、コマンド ラインからスクリプトを実行できます:


python .myprojectteststest_one.py

これにより、期待される結果が出力されるはずです。


私はからの戻り値ですapi.api!

結論


これらの手順を組み込むことで、兄弟パッケージのインポートの問題が効果的に解決され、スクリプトをsys.path ハックに頼らずにコマンドラインを実行できます。

以上が兄弟パッケージからインポートするときに「sys.path」ハッキングを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。