從命令列運行腳本時,從同級包導入模組通常會帶來挑戰。為了緩解這些困難,我們提出了一個替代解決方案,消除了笨拙的 sys.path.insert hacks 的需求。
我們將我們的程式碼打包到一個資料夾中並將其結構為如下:
<br>└── myproject<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 以可編輯狀態安裝它: p>
pip install -e .
當從我們的包中導入模組時,我們將在導入前添加myproject. 前綴,如test_one.py 中所示:< ;/p>
從myproject.api.api導入function_from_api
請注意,只有對於沒有 pyproject.toml 檔案和 pip install 就無法工作的導入,此前綴才是必需的。
完成所有必要的設定後,我們可以從命令列:
python .myprojectteststest_one.py
這應該輸出預期的結果:
我是回傳值api.api!
透過合併這些步驟,我們已經有效解決了同級套件匯入的問題,現在可以從命令列,無需求助於sys.path hacks。
以上是從同級套件導入時如何避免「sys.path」駭客攻擊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!