System bibliotek Pytigona dostarcza uporządkowany sposób współdzielenia kodu między aplikacjami wewnątrz projektu. Biblioteki są wykrywane i ładowane automatycznie w czasie działania — wystarczy utworzyć właściwy katalog i umieścić w nim moduły Pythona.
Pytigon szuka bibliotek w trzech lokalizacjach, z jasną hierarchią:
[app]/applib/Kod specyficzny dla pojedynczej aplikacji, ale zorganizowany jako osobne moduły:
myapp/
├── applib/
│ ├── __init__.py
│ ├── utils.py # Współdzielone funkcje narzędziowe
│ ├── validators.py # Niestandardowe walidatory
│ └── reports.py # Logika generowania raportów
├── models.py
└── views.py
[PRJ]/prjlib/Kod współdzielony między wszystkimi aplikacjami w projekcie. Są automatycznie dodawane do ścieżki Pythona:
[PRJ]/
├── prjlib/
│ ├── __init__.py
│ ├── common_utils.py # Narzędzia używane przez wiele aplikacji
│ └── base_views.py # Współdzielone klasy widoków bazowych
├── myapp/
└── settings_app.py
[DATA]/[PRJ]/prjlib/Pakiety zainstalowane przez ptig pip install trafiają tu. To zależności specyficzne dla projektu, które nie zaśmiecają globalnego środowiska Pythona.
[DATA]/[PRJ]/syslib/Rozszerzenia C, C++, Nim i Zig kompilowane automatycznie podczas instalacji ze źródeł. Omijają GIL Pythona dla operacji krytycznych wydajnościowo.
Biblioteki są importowane automatycznie przy starcie. Mechanizm importu:
applib/prjlib/sys.pathMożesz importować z dowolnej lokalizacji biblioteki używając standardowych importów Pythona:
# Z biblioteki aplikacji
from applib.utils import my_function
# Z biblioteki projektu (importowane też jako 'prjlib')
from prjlib.common_utils import shared_constant
# Bezpośredni import też działa
import applib.validators
Sam Pytigon jest zorganizowany jako zbiór bibliotek. Główne biblioteki dostępne w każdym projekcie to:
| Biblioteka | Przeznaczenie |
|---|---|
schdjangoext |
Rozszerzenia Django — JSONModel, FastForm, pola, widgety |
schviews |
Ogólne widoki — TableView, FormView, TreeView |
schhtml |
Silnik renderowania — generowanie HTML/PDF/ODF |
schfs |
Abstrakcja wirtualnego systemu plików |
schindent |
Preprocesor szablonów .ihtml |
schtable |
Struktury danych tabel |
schtasks |
Planowanie zadań w tle |
schparser |
Narzędzia parsowania HTML |
schspreadsheet |
Przetwarzanie arkuszy (ODF/XLSX) |
schtools |
Rozmaite narzędzia — obrazy, szyfrowanie, instalacja |
schhttptools |
Klient HTTP, klient REST, narzędzia WebSocket |
schandroid |
Komponenty klienta Android/Kivy |
applib/ skupione — Jeśli kod jest używany przez wiele aplikacji, awansuj go do prjlib/prjlib/ dla współdzielonej logiki biznesowej — Walidatory, klasy bazowe, funkcje narzędziowesyslib/ obsługuje moduły C, Nim i Zig, które kompilują się automatycznie przy instalacji