首頁 >後端開發 >Python教學 >如何在不使用「sys.path」駭客的情況下從同級套件匯入?

如何在不使用「sys.path」駭客的情況下從同級套件匯入?

Linda Hamilton
Linda Hamilton原創
2024-12-08 15:56:13263瀏覽

How to Import from Sibling Packages Without Using `sys.path` Hacks?

同級套件匯入:避免 sys.path 駭客攻擊的解決方案

從同級套件匯入可能會對組織程式碼庫帶來挑戰。雖然 sys.path.append hack 提供了一種解決方法,但還有一個更優雅的解決方案,可以消除這些侵入性插入的需要。

步驟:

  1. 建立 pyproject.toml檔案:
    在 pyproject.toml 中定義包元資料和相依性檔案。
  2. 使用虛擬環境:
    透過建立虛擬環境將專案與系統相依性隔離。
  3. 以可編輯狀態安裝項目:
    使用 pip 和 -e 標誌以可編輯狀態安裝包,確保自動進行更改反映。
  4. 修改導入:
    前置 myproject。之前失敗的導入,例如 from myproject.api import function_name.

範例:

考慮下列檔案結構:

  • api/api.py
  • examples/exampleone.p y
  • 測試/測試_one.py
  • pyproject.toml

api.py:

def function_from_api():
    return 'I am the return value from api.api!'

test_test_one.py

from myproject.api.api import function_from_api

def test_function():
    print(function_from_api())

if __name__ == '__main__':
    test_function()

至運行test_one.py,確保 myproject 以可編輯狀態安裝。然後,執行:

python myproject/tests/test_one.py

你應該看到輸出:「I am the return value from api.api!」。

結論:

這個方法允許你從同級套件匯入,而無需求助於像 sys.path.append 這樣的駭客解決方案。透過利用 pyproject.toml 和可編輯安裝,您可以維護乾淨且模組化的程式碼庫,同時促進輕鬆的擴充和測試。

以上是如何在不使用「sys.path」駭客的情況下從同級套件匯入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn