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

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

Patricia Arquette
Patricia Arquette原創
2024-12-09 12:10:13205瀏覽

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中文網其他相關文章!

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