Пакеттөө жана жарыялоо
Модулдер папкасын PyPIде орнотулуучу, версияланган, бөлүшүүгө боло турган пакетке айландырыңыз
pyproject.toml ичинде жарыялайт. Андан куруу бэкенди эки артефакт чыгарат: булак дистрибутиви (sdist) жана курулган wheel. Сиз аларды twine менен Python Package Index (PyPI) кызматына жүктөйсүз, ошондон кийин каалаган адам pip install сиздин-пакет буйругун аткара алат. Бул жерде эч кандай сыйкыр жок - жөн гана метадайындар, куруу кадамы жана жүктөө.
- долбоорду src-жайгаштыруу менен жайгаштыруу жана эмне үчүн ал каталардын бүтүндөй классын алдын алаарын түшүнүү,
- толук
pyproject.tomlжазуу:[build-system],[project]метадайындары, көз карандылыктар, милдеттүү эмес extras жана консолдук кирүү чекиттери, - иштеп чыгуу үчүн обочолонгон виртуалдык чөйрөнү түзүү жана колдонуу,
python -m buildмененsdistжанаwheelкуруу жана айырманы түшүндүрүү,- семантикалык версиялоо боюнча версияны тандоо жана чындыктын бирдиктүү булагын сактоо,
- адегенде TestPyPIге, андан кийин API-токен жана
twineменен PyPIге жарыялоо.
1. Пакеттөө кайсы маселени чечет
Сиз кодду модулдерге жана пакеттерге (__init__.py бар папкаларга) бөлүүнү жана аларды импорттоону билесиз. Сиздин машинада бул иштейт, анткени учурдагы каталог sys.path ичинде турат. Бирок код башка бирөөгө керек болгон учурда, формалдуу эмес бөлүшүү иштебей калат: кайсы файлдар керек, кайсы үчүнчү тараптын китепканаларын алдын ала орнотуу керек, Pythondun кайсы версиясы талап кылынат жана import yourlib чоочун машинада кантип чечилет?
Пакеттөө мунун баарына декларативдик түрдө жооп берет. Сиз долбоорду бир жолу сүрөттөйсүз, куруу куралы стандарттуу артефакт жаратат, ал эми pip аны каалаган чөйрөгө орнотууну өз мойнуна алат - файлдарды site-packages ичине көчүрөт жана жарыяланган көз карандылыктарды тартат. Окурман эч нерсени божомолдобойт; метадайындар аброюлуу.
Тарыхый жактан бул метадайындар аткарылуучу setup.py скриптинде жашаган. Долбоордун атын жөн гана окуу үчүн ыктыярдуу кодду иштетүү морт жана коопсуз эмес болчу, ошондуктан экосистема декларативдик стандартка өттү. PEP 518 pyproject.toml киргизди, PEP 621 болсо [project] таблицасын стандартташтырды. Бүгүн pyproject.toml - керектүү жалгыз файл; setup.py жана setup.cfg эскирген.