Pypi

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 6. dubna 2021; kontroly vyžadují 7 úprav .
pypi
URL pypi.org
Typ webu úložiště
jazyky) vícejazyčné, včetně ruštiny
Začátek práce 2003 [1]
Aktuální stav aktivní

PyPI ( zkr. z anglického  Py thon Package I ndex - "adresář balíků  Python") je softwarový adresář napsaný v programovacím jazyce Python [2] . V kombinaci se systémy pro správu balíků knihoven ( pip , easy_install) je to obdoba PEAR pro PHP a CPAN pro Perl [3] . K únoru 2020 obsahuje více než 216 000 balíčků [4] , zatímco v roce 2010 to bylo jen asi 10 000 balíčků [5] .

Historie

Modul Python Distribution Utilities (distutils) byl poprvé přidán do standardní knihovny Pythonu ve verzi 1.6.1 v září 2000, [6] Všechny existující balíčky byly migrovány na novou platformu a jejich historie byla zachována. [7] a ve verzi 2.0 v říjnu 2000, devět let po prvním vydání Pythonu (únor 1991), aby se zjednodušil proces instalace balíčků třetích stran v Pythonu. [osm]

Registrace v adresáři

Sami autoři registrují své balíčky do katalogu (poprvé potřebují poskytnout údaje o sobě) na PyPI [9] :

registr python setup.py

Metadata jsou obvykle uložena v souboru setup.py jako součást distribučního balíčku a balíček se načte jediným příkazem [10] :

python setup.py sdist-format=zip,gztar upload

Metadata požadovaná pro registraci jsou zdokumentována v PEP241 [11] (Python Development Návrh) přijatém v roce 2001. Povinné jsou: verze metadat, název balíčku, verze balíčku, platforma(y), krátký popis, e-mailová adresa autora, licence.

Balíček lze navíc klasifikovat pomocí jednoho nebo více klasifikátorů .

Systémy správy balíků knihoven

Modul distutilsze standardní knihovny Pythonu [12] :

  1. Poskytuje základ pro standardní pole metadat balíčku
  2. Obsahuje sadu nástrojů pro sestavení balíčku a vytvoření archivu pro distribuci nebo instalační program (pro Windows )

Možnosti distutilsjsou omezeny na jeden balíček, nemá možnost definovat závislosti.

setuptoolsModulový systém správy balíčků distutilsimplementuje nejjednodušší systém sledování závislostí, zpracovává načítání balíčků a interakci s PyPI. Balíček setuptoolsmůže automaticky stáhnout a nainstalovat závislosti balíčku.

Obslužný program easy_install je doplňkem aplikace setuptoolsa instaluje je během instalace [13] .

Balíček Distribute se setuptools oddělil od projektu , který je aktivně vyvíjen a podporuje Python 3 [14] .

Předpokládá se [15] , že aktuálně vyvíjený balíček je založen na standardní knihovně Pythonu distutilsa bude do ní zahrnut. Tím bude zachována kompatibilita se starým [16] . Distributedistutils2distutils

Nástroj pip je podobný jako easy_install [17] .

Příklad

Následující příklad je převzat ze souboru setup.py balíčku webpy-celery a je popisem metadat souvisejících s balíčkem:

setup ( name = 'webpy-celery' , version = __version__ , url = 'http://github.com/faruken/webpy-celery' , licence = 'BSD' , autor = 'Faruk Akgul' , author_email = 'me@ akgul.org' , description = 'Celery wrapper for web.py framework' , long_description = __doc__ , zip_safe = False , packages = find_packages ( exclude = [ 'examples' , 'tests' ]), platforms = 'any' , install_requires = [ 'web.py>=0.34' , 'celery>=2.3.0' , ], classifiers = [ 'Prostředí::Webové prostředí' , 'Zamýšlené publikum::Developers' , 'Licence::Schváleno OSI:: Licence BSD ' , 'Operační systém:: OS Independent' , 'Programovací jazyk:: Python' , 'Programovací jazyk:: Python:: 2.5' , 'Programovací jazyk:: Python:: 2.6' , 'Programovací jazyk:: Python:: 2.7 ' , 'Topic::Internet::WWW/HTTP::Dynamic Content' , 'Topic::Vývoj softwaru::Knihovny::Python Modules' , ], )

Pomocí adresáře

Jak je uvedeno na webu PyPI, můžete adresář použít pomocí příkazu pip (za předpokladu, že je předinstalovaný):

pip instalační název_balíčku

Nebo jednoduše vyhledejte, stáhněte, rozbalte a spusťte soubor setup.py a nainstalujte požadovaný balíček:

instalace python setup.py

V obou případech budou všechny závislosti instalovaného balíčku automaticky nalezeny a nainstalovány.

Totéž lze provést s dalšími nástroji, jako je snadná instalace .

Zabezpečení

Katalog PyPI slouží jako zdroj informací pro systémy aktualizace softwaru Python, což nevyhnutelně vyvolává otázku bezpečnosti informací. Systém správy knihoven Python umožňuje vzájemně nedůvěřivým vývojářům zpřístupnit své knihovny uživatelům .  V současné době PyPI postrádá bezpečnostní mechanismus pro detekci aktualizací ( angl. update discovery ) a proces instalace, ale existuje TUF ( angl. The Update Framework ) - prototyp frameworku pro bezpečnou práci s PyPI pomocí utility easy_install [19] .   

Poznámky

  1. Historie balení . pypa.io. _ Získáno 30. března 2021. Archivováno z originálu dne 16. března 2021.
  2. Výukový program Python Package Index Archivováno 23. dubna 2012. , 2003-09-24, Jeremy Hylton: weblog
  3. TUF: aktualizační rámec . Získáno 21. července 2012. Archivováno z originálu 8. srpna 2020.
  4. PyPI – index balíku Pythonu . Získáno 22. července 2014. Archivováno z originálu 15. dubna 2018.
  5. Počty modulů . Získáno 22. července 2014. Archivováno z originálu 9. června 2017.
  6. Python Insider: Spuštěno nové PyPI, starší PyPI bude ukončeno 30. dubna . Python Software Foundation (16. dubna 2018). Staženo 1. června 2018. Archivováno z originálu 23. dubna 2018.
  7. Nový index balíků pro Python . LWN.net . Staženo 1. června 2018. Archivováno z originálu 17. května 2018.
  8. Mark Lutz. Učení Pythonu, 5. vydání . — ISBN ‎ 978-1449355739. Archivováno 8. října 2021 na Wayback Machine
  9. Barry, 2010 , str. 48.
  10. Alchin, 2010 , str. 241-242.
  11. http://www.python.org/dev/peps/pep-0241/ Archivováno 27. května 2012 na Wayback Machine PEP241
  12. Greg Ward, Anthony Baxter, Distribuce modulů Pythonu . Získáno 28. července 2012. Archivováno z originálu dne 25. října 2012.
  13. Ziade, 2008 , pp. 21-23.
  14. Distribuce (downlink) . Datum přístupu: 28. července 2012. Archivováno z originálu 29. ledna 2014. 
  15. Stopařův průvodce balením, aktuální stav balení (odkaz není k dispozici) . Datum přístupu: 28. července 2012. Archivováno z originálu 24. července 2014. 
  16. Distutils2 na PyPI . Získáno 28. července 2012. Archivováno z originálu dne 21. června 2017.
  17. pecka . Získáno 28. července 2012. Archivováno z originálu 2. června 2017.
  18. Samuel a kol., 2010 .
  19. https://www.updateframework.com/wiki/SecuringPythonPackageManagement Archivováno 17. prosince 2012. TUF framework pro bezpečný upgrade

Odkazy

Literatura

  • Paul Barry. HeadFirstPython . - O'Reilly Media, 2010. - 494 s. — ISBN 978-1-4493-8267-4 .
  • Marty Alchin. ProPython. - Apress, 2010. - 368 s. — ISBN 978-1-4302-2757-1 .
  • Justin Samuel, Nick Mathewson, Justin Cappos a Roger Dingledine. Klíčový kompromis pro přežití v systémech aktualizace softwaru  //  Sborník z XVII. konference ACM o bezpečnosti počítačů a komunikací. - NY, 2010. - S. 61-72 . — ISBN 978-1-4503-0245-6 . - doi : 10.1145/1866307.1866315 .
  • Tarek Ziade. Expertní programování v Pythonu. - Packt Publishing, 2008. - 372 s. — ISBN 9781847194947 .