Pypi

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. április 6-án felülvizsgált verziótól ; az ellenőrzések 7 szerkesztést igényelnek .
pypi
URL pypi.org
Webhely típusa adattár
nyelvek) többnyelvű, beleértve az oroszt is
A munka kezdete 2003 [1]
Jelenlegi állapot aktív

A PyPI ( rövidítés az angol  P y thon Package I ndexből  - "Python csomagkönyvtár") egy Python programozási nyelven írt szoftverkönyvtár [2] . A könyvtári csomagkezelő rendszerekkel ( pip , easy_install) kombinálva hasonló a PEAR for PHP -hez és a CPAN -hoz Perl esetén [3] . 2020 februárjában több mint 216 000 csomagot tartalmaz [4] , míg 2010-ben már csak körülbelül 10 000 csomagot [5] .

Történelem

A Python Distribution Utilities (distutils) modult először 2000 szeptemberében adták hozzá a Python szabványos könyvtárához az 1.6.1-es verzióban, [6] Az összes meglévő csomagot áttelepítették az új platformra, és megőrizték előzményeiket. [7] és a 2.0-s verzióban 2000 októberében, kilenc évvel a Python első kiadása (1991. február) után, hogy leegyszerűsítsék a harmadik féltől származó csomagok Pythonban való telepítésének folyamatát. [nyolc]

Regisztráció a címtárban

A szerzők maguk regisztrálják csomagjaikat a katalógusban (amikor először kell adatokat megadniuk magukról) a PyPI-n [9] :

python setup.py regisztráció

A metaadatok általában a setup.py fájlban tárolódnak a terjesztési csomag részeként, és a csomag egyetlen paranccsal töltődik be [10] :

python setup.py sdist-format=zip,gztar feltöltés

A regisztrációhoz szükséges metaadatokat a 2001-ben elfogadott PEP241 [11] (Python Development Proposal) dokumentálja. Szükséges a következők: metaadatok verziója, csomag neve, csomag verziója, platform(ok), rövid leírás, szerző e-mail címe, licenc.

Ezenkívül egy csomag egy vagy több osztályozóval is besorolható .

Könyvtári csomagkezelő rendszerek

Modul distutilsa Python szabványkönyvtárból [12] :

  1. A csomag szabványos metaadatmezőinek alapját adja
  2. Tartalmaz egy sor segédprogramot csomag létrehozásához és archívum létrehozásához a terjesztéshez vagy a telepítőhöz ( Windows esetén )

A képességek distutilsegyetlen csomagra korlátozódnak, ez nem képes függőségek meghatározására.

setuptoolsA modul alapú csomagkezelő rendszer distutilsa legegyszerűbb függőségi nyomkövető rendszert valósítja meg, kezeli a csomagok betöltését és a PyPI-vel való interakciót. A csomagok setuptoolsautomatikusan letölthetik és telepíthetik a csomagfüggőségeket.

Az easy_install segédprogram a -hoz tartozik setuptools, és a telepítés során telepíti őket [13] .

A projekttől setuptools elkülönült Distribute csomag , amelyet aktívan fejlesztenek és támogatja a Python 3 [14] .

Feltételezzük [15] , hogy a jelenleg fejlesztés alatt álló csomag a Python szabványkönyvtáron alapul, distutilsés abban benne lesz. Ez megőrzi a régivel való kompatibilitást [16] . Distributedistutils2distutils

A pip segédprogram hasonló az easy_install [17] -hez .

Példa

A következő példa a webpy-celery csomag setup.py fájljából származik, és a csomaghoz kapcsolódó metaadatok leírása:

setup ( name = 'webpy-celery' , version = __version__ , url = 'http://github.com/faruken/webpy-celery' , licence = 'BSD' , author = 'Faruk Akgul' , author_email = 'én@ akgul.org' , description = 'Celery wrapper a web.py keretrendszerhez' , long_description = __doc__ , zip_safe = False , packages = find_packages ( clude = [ 'examples' , 'tests' ]), platforms = 'bármilyen' , install_requires = [ 'web.py>=0.34' , 'zeller>=2.3.0' , ], classifiers = [ 'Környezet::Webkörnyezet' , 'Célközönség::Fejlesztők' , 'Licenc::OSI jóváhagyva::BSD-licenc ' , 'Operációs rendszer:: OS független' , 'Programozási nyelv:: Python' , 'Programozási nyelv:: Python:: 2.5' , 'Programozási nyelv:: Python:: 2.6' , 'Programozási nyelv:: Python:: 2.7 ' , 'Téma::Internet::WWW/HTTP::Dinamikus tartalom' , 'Téma::Szoftverfejlesztés::Könyvtárak::Python modulok' , ], )

A könyvtár használata

A PyPI webhelyen leírtak szerint a könyvtárat a pip paranccsal használhatja (feltéve, hogy az előre telepítve van):

pip telepítési csomag_neve

Vagy egyszerűen keresse meg, töltse le, csomagolja ki, majd futtassa a setup.py fájlt a szükséges csomag telepítéséhez:

python setup.py telepítése

Mindkét esetben a telepítendő csomag összes függősége automatikusan megkeres és telepítődik.

Ugyanez megtehető más segédprogramokkal, például az egyszerű telepítéssel .

Biztonság

A PyPI katalógus információforrásként szolgál a Python szoftverfrissítő rendszerek számára, ami elkerülhetetlenül felveti az információbiztonság kérdését. A Python könyvtárkezelő rendszer lehetővé teszi a kölcsönösen bizalmatlan fejlesztők számára, hogy könyvtáraikat elérhetővé tegyék a felhasználók számára .  Jelenleg a PyPI-ből hiányzik a frissítésészlelés ( eng. update discovery ) és a telepítési folyamat biztonsági mechanizmusa, de létezik a TUF ( eng. The Update Framework ) – egy prototípus keretrendszer a PyPI-vel való biztonságos munkavégzéshez az easy_install segédprogram segítségével [19] .   

Jegyzetek

  1. Csomagolástörténet . pypa.io. _ Letöltve: 2021. március 30. Az eredetiből archiválva : 2021. március 16.
  2. Python Package Index oktatóanyag archiválva : 2012. április 23. , 2003-09-24, Jeremy Hylton: weblog
  3. TUF: a frissítési keretrendszer . Letöltve: 2012. július 21. Az eredetiből archiválva : 2020. augusztus 8..
  4. PyPI – a Python csomagindex . Letöltve: 2014. július 22. Az eredetiből archiválva : 2018. április 15.
  5. Modulszámok . Letöltve: 2014. július 22. Az eredetiből archiválva : 2017. június 9..
  6. Python Insider: Új PyPI indult, a régi PyPI április 30-án leáll . Python Software Foundation (2018. április 16.). Letöltve: 2018. június 1. Az eredetiből archiválva : 2018. április 23.
  7. Új csomagindex a Python számára . LWN.net . Letöltve: 2018. június 1. Az eredetiből archiválva : 2018. május 17.
  8. Mark Lutz. Learning Python, 5. kiadás . — ISBN ‎ 978-1449355739. Archiválva : 2021. október 8. a Wayback Machine -nél
  9. Barry, 2010 , p. 48.
  10. Alchin, 2010 , pp. 241-242.
  11. http://www.python.org/dev/peps/pep-0241/ Archiválva : 2012. május 27. a Wayback Machine PEP241 -nél
  12. Greg Ward, Anthony Baxter, Python modulok terjesztése . Letöltve: 2012. július 28. Az eredetiből archiválva : 2012. október 25..
  13. Ziade, 2008 , pp. 21-23.
  14. Terjesztés (downlink) . Hozzáférés dátuma: 2012. július 28. Az eredetiből archiválva : 2014. január 29. 
  15. Stoppos útmutató a csomagoláshoz, A csomagolás jelenlegi állapota (a hivatkozás nem elérhető) . Hozzáférés dátuma: 2012. július 28. Az eredetiből archiválva : 2014. július 24. 
  16. Distutils2 a PyPI-n . Letöltve: 2012. július 28. Az eredetiből archiválva : 2017. június 21.
  17. pip . Letöltve: 2012. július 28. Az eredetiből archiválva : 2017. június 2.
  18. Samuel et al, 2010 .
  19. https://www.updateframework.com/wiki/SecuringPythonPackageManagement Archiválva : 2012. december 17. TUF keretrendszer a biztonságos frissítéshez

Linkek

Irodalom

  • Paul Barry. HeadFirstPython . - O'Reilly Media, 2010. - 494 p. — ISBN 978-1-4493-8267-4 .
  • Marty Alchin. ProPython. - Apress, 2010. - 368 p. — ISBN 978-1-4302-2757-1 .
  • Justin Samuel, Nick Mathewson, Justin Cappos és Roger Dingledine. Túlélhető kulcskompromisszum a szoftverfrissítési rendszerekben  //  A számítógép- és kommunikációbiztonság XVII. ACM konferenciájának anyaga. - NY, 2010. - P. 61-72 . — ISBN 978-1-4503-0245-6 . - doi : 10.1145/1866307.1866315 .
  • Tarek Ziade. Szakértő Python programozás. - Packt Publishing, 2008. - 372 p. — ISBN 9781847194947 .