Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengelakkan Peretasan `sys.path` Apabila Mengimport daripada Pakej Adik Beradik?

Bagaimana untuk Mengelakkan Peretasan `sys.path` Apabila Mengimport daripada Pakej Adik Beradik?

Patricia Arquette
Lepaskan: 2024-12-09 12:10:13
asal
205 orang telah melayarinya

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

Mengatasi Import Pakej Adik Beradik


Mengimport modul daripada pakej adik beradik selalunya boleh menimbulkan cabaran apabila menjalankan skrip daripada baris arahan. Untuk mengurangkan kesukaran ini, kami membentangkan penyelesaian alternatif yang menghapuskan keperluan untuk menggodam sys.path.insert yang kekok.


Pendekatan


Kami akan pakejkan kod kami ke dalam satu folder dan susunkannya sebagai berikut:


<br>└── myproject</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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
Salin selepas log masuk


Selain itu, kami akan mencipta pyproject. toml dalam folder akar untuk menerangkan fail pakej.


Memasang Pakej


Untuk menjadikan pakej kami tersedia untuk import, kami akan memasangnya dalam keadaan boleh diedit menggunakan pip:
pemasangan pip -e .

Mengendalikan Import


Apabila mengimport modul daripada pakej kami, kami akan menetapkan awalan import dengan myproject., seperti yang ditunjukkan dalam test_one.py:< ;/p>
daripada myproject.api.api import function_from_api

Perhatikan bahawa awalan ini diperlukan hanya untuk import yang tidak akan berfungsi tanpa fail pyproject.toml dan pemasangan pip.


Menjalankan Skrip


Dengan semua persediaan yang diperlukan disediakan, kami boleh menjalankan skrip kami dari baris arahan:


python .myprojectteststest_one.py</pre&gt ;<br><p>Ini sepatutnya menghasilkan yang diharapkan hasil:</p><br><pra>Saya ialah nilai pulangan daripada api.api!

Kesimpulan


Dengan menggabungkan langkah ini, kami telah menyelesaikan isu import pakej adik beradik dengan berkesan dan kini boleh menjalankan skrip daripada baris arahan tanpa menggunakan sys.path hacks.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Peretasan `sys.path` Apabila Mengimport daripada Pakej Adik Beradik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan