Pypi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 6. huhtikuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 7 muokkausta .
pypi
URL-osoite pypi.org
Sivuston tyyppi arkisto
Kieli (kielet) monikielinen, mukaan lukien venäjä
Työn alku 2003 [1]
Nykyinen tila aktiivinen

PyPI ( lyhenne englannin  kielestä P y thon Package I ndex  - "Python-pakettihakemisto") on Python - ohjelmointikielellä kirjoitettu ohjelmistohakemisto [2] . Yhdessä kirjastopakettien hallintajärjestelmien ( pip , easy_install ) kanssa se on samanlainen kuin PEAR PHP :lle ja CPAN Perlille [3] . Helmikuussa 2020 se sisältää yli 216 000 pakettia [4] , kun taas vuonna 2010 paketteja oli vain noin 10 000 [5] .

Historia

Python Distribution Utilities (distutils) -moduuli lisättiin ensimmäisen kerran Python-standardikirjastoon versiossa 1.6.1 syyskuussa 2000. [6] Kaikki olemassa olevat paketit siirrettiin uudelle alustalle ja niiden historiat säilytettiin. [7] ja versiossa 2.0 lokakuussa 2000, yhdeksän vuotta Pythonin ensimmäisen julkaisun (helmikuussa 1991) jälkeen. Tarkoituksena oli yksinkertaistaa kolmannen osapuolen pakettien asennusta Pythonissa. [kahdeksan]

Rekisteröityminen hakemistoon

Tekijät rekisteröivät itse pakettinsa luetteloon (ensimmäisen kerran heidän on annettava tietoja itsestään) PyPI :ssä [9] :

python setup.py -rekisteri

Metatiedot tallennetaan yleensä setup.py-tiedostoon osana jakelupakettia, ja paketti ladataan yhdellä komennolla [10] :

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

Rekisteröinnin edellyttämät metatiedot on dokumentoitu vuonna 2001 hyväksytyssä PEP241:ssä [11] (Python Development Proposal). Vaaditaan: metatietoversio, paketin nimi, paketin versio, alusta(t), lyhyt kuvaus, kirjoittajan sähköpostiosoite, lisenssi.

Lisäksi paketti voidaan luokitella käyttämällä yhtä tai useampaa luokittelua .

Kirjastopakettien hallintajärjestelmät

distutilsPython - standardikirjaston moduuli [12] :

  1. Tarjoaa perustan vakiopakettien metatietokentille
  2. Sisältää joukon apuohjelmia paketin rakentamiseen ja arkiston luomiseen jakelua tai asennusohjelmaa varten ( Windows )

Ominaisuudet distutilsrajoittuvat yhteen pakettiin, sillä ei ole kykyä määritellä riippuvuuksia.

setuptoolsModuulipohjainen paketinhallintajärjestelmä distutilstoteuttaa yksinkertaisimman riippuvuuden seurantajärjestelmän, hoitaa pakettien lataamisen ja vuorovaikutuksen PyPI:n kanssa. Paketti setuptoolsvoi automaattisesti ladata ja asentaa pakettiriippuvuuksia.

Easy_install-apuohjelma on lisäosa sovellukseen setuptoolsja asentaa ne asennuksen aikana [13] .

Projektista setuptools erotettu Distribute-paketti , jota kehitetään aktiivisesti ja joka tukee Python 3:a [14] .

Oletetaan [15] , että parhaillaan kehitteillä oleva paketti perustuu Python-standardikirjastoon distutilsja sisällytetään siihen. Tämä säilyttää yhteensopivuuden vanhan kanssa [16] . Distributedistutils2distutils

Pip-apuohjelma on samanlainen kuin easy_install [17] .

Esimerkki

Seuraava esimerkki on otettu webpy-celery-paketin setup.py-tiedostosta ja on kuvaus pakettiin liittyvistä metatiedoista:

setup ( nimi = 'webpy-selery' , version = __version__ , url = 'http://github.com/faruken/webpy-celery' , lisenssi = 'BSD' , author = 'Faruk Akgul' , author_email = 'minä@ akgul.org' , description = 'Sellerikääre web.py-kehykseen' , long_description = __doc__ , zip_safe = Väärin , paketit = find_packages ( exclude = [ 'examples' , 'tests' ]), platforms = 'kaikki' , install_requires = [ 'web.py>=0.34' , 'selleri>=2.3.0' , ], classifiers = [ 'Ympäristö::Web Environment' , 'Intended Audience::Developers' , 'Lisenssi::OSI Hyväksytty::BSD-lisenssi ' , 'Käyttöjärjestelmä:: Käyttöjärjestelmästä riippumaton' , 'Ohjelmointikieli:: Python' , 'Ohjelmointikieli:: Python:: 2.5' , 'Ohjelmointikieli:: Python:: 2.6' , 'Ohjelmointikieli:: Python:: 2.7 ' , 'Aihe::Internet::WWW/HTTP::Dynaaminen sisältö' , 'Aihe::Ohjelmistokehitys::Kirjastot::Python-moduulit' , ], )

Hakemiston

Kuten PyPI-verkkosivustolla todetaan, voit käyttää hakemistoa pip-komennolla (olettaen, että se on esiasennettu):

pip asennus paketin_nimi

Tai vain etsi, lataa, pura ja suorita setup.py-tiedosto asentaaksesi vaaditun paketin:

python setup.py asennus

Molemmissa tapauksissa kaikki asennettavan paketin riippuvuudet löydetään ja asennetaan automaattisesti.

Sama voidaan tehdä muiden apuohjelmien, kuten helpon asennuksen , kanssa .

Turvallisuus

PyPI-luettelo toimii tietolähteenä Python-ohjelmistopäivitysjärjestelmille, mikä nostaa väistämättä esiin tietoturvakysymyksen. Python-kirjastojen hallintajärjestelmä mahdollistaa toisiaan epäluottamuksellisten kehittäjien tuoda kirjastonsa käyttäjien saataville .  Tällä hetkellä PyPI:stä puuttuu suojausmekanismi päivityksen havaitsemiseen ( eng. update discovery ) ja asennusprosessiin, mutta olemassa on TUF ( eng. The Update Framework ) - prototyyppikehys PyPI:n turvalliseen työskentelyyn easy_install-apuohjelman avulla [19] .   

Muistiinpanot

  1. Pakkaushistoria . pypa.io. _ Haettu 30. maaliskuuta 2021. Arkistoitu alkuperäisestä 16. maaliskuuta 2021.
  2. Python-pakettihakemiston opetusohjelma arkistoitu 23. huhtikuuta 2012. , 24.9.2003, Jeremy Hylton: blogi
  3. TUF: päivityskehys . Haettu 21. heinäkuuta 2012. Arkistoitu alkuperäisestä 8. elokuuta 2020.
  4. PyPI - Python-pakettiindeksi . Haettu 22. heinäkuuta 2014. Arkistoitu alkuperäisestä 15. huhtikuuta 2018.
  5. Moduulimäärät . Haettu 22. heinäkuuta 2014. Arkistoitu alkuperäisestä 9. kesäkuuta 2017.
  6. Python Insider: Uusi PyPI julkaistiin, vanha PyPI suljetaan 30. huhtikuuta . Python Software Foundation (16. huhtikuuta 2018). Haettu 1. kesäkuuta 2018. Arkistoitu alkuperäisestä 23. huhtikuuta 2018.
  7. Uusi pakettihakemisto Pythonille . LWN.net . Haettu 1. kesäkuuta 2018. Arkistoitu alkuperäisestä 17. toukokuuta 2018.
  8. Mark Lutz. Pythonin oppiminen, 5. painos . — ISBN ‎ 978-1449355739. Arkistoitu 8. lokakuuta 2021 Wayback Machinessa
  9. Barry, 2010 , s. 48.
  10. Alchin, 2010 , s. 241-242.
  11. http://www.python.org/dev/peps/pep-0241/ Arkistoitu 27. toukokuuta 2012 Wayback Machinessa PEP241
  12. Greg Ward, Anthony Baxter, Python-moduulien jakelu . Haettu 28. heinäkuuta 2012. Arkistoitu alkuperäisestä 25. lokakuuta 2012.
  13. Ziade, 2008 , s. 21-23.
  14. Levitä (downlink) . Käyttöpäivä: 28. heinäkuuta 2012. Arkistoitu alkuperäisestä 29. tammikuuta 2014. 
  15. Liftoauton pakkausopas, Pakkauksen nykytila ​​(linkki ei saatavilla) . Käyttöpäivä: 28. heinäkuuta 2012. Arkistoitu alkuperäisestä 24. heinäkuuta 2014. 
  16. Distutils2 PyPI:ssä . Haettu 28. heinäkuuta 2012. Arkistoitu alkuperäisestä 21. kesäkuuta 2017.
  17. pip . Haettu 28. heinäkuuta 2012. Arkistoitu alkuperäisestä 2. kesäkuuta 2017.
  18. Samuel ym., 2010 .
  19. https://www.updateframework.com/wiki/SecuringPythonPackageManagement Arkistoitu 17. joulukuuta 2012. TUF-kehys turvalliseen päivitykseen

Linkit

Kirjallisuus

  • 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 ja Roger Dingledine. Selviytyvät avainkompromissi ohjelmistopäivitysjärjestelmissä  //  Proceedings of the XVII ACM Conference on Computer and Communications Security. - NY, 2010. - P. 61-72 . — ISBN 978-1-4503-0245-6 . - doi : 10.1145/1866307.1866315 .
  • Tarek Ziade. Asiantunteva Python-ohjelmointi. - Packt Publishing, 2008. - 372 s. — ISBN 9781847194947 .