首頁 > 後端開發 > Python教學 > 從同級套件導入時如何避免「sys.path」駭客攻擊?

從同級套件導入時如何避免「sys.path」駭客攻擊?

Patricia Arquette
發布: 2024-12-09 12:10:13
原創
206 人瀏覽過

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

解決同級套件導入問題


從命令列運行腳本時,從同級包導入模組通常會帶來挑戰。為了緩解這些困難,我們提出了一個替代解決方案,消除了笨拙的 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板