Pypi

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 6. april 2021; checks kræver 7 redigeringer .
pypi
URL pypi.org
Site type depot
Sprog) flersproget, herunder russisk
Begyndelse af arbejdet 2003 [1]
Nuværende status aktiv

PyPI ( forkortelse fra det engelske  P y thon Package I ndex  - "Python package directory") er et softwarebibliotek skrevet i Python - programmeringssproget [2] . I kombination med bibliotekspakkehåndteringssystemer ( pip , easy_install) ligner det PEAR for PHP og CPAN for Perl [3] . Fra februar 2020 indeholder den mere end 216.000 pakker [4] , mens der i 2010 kun var omkring 10.000 pakker [5] .

Historie

Python Distribution Utilities (distutils)-modulet blev først tilføjet til Python-standardbiblioteket i version 1.6.1 i september 2000, [6] Alle eksisterende pakker blev migreret til den nye platform, og deres historier blev bevaret. [7] og i version 2.0 i oktober 2000, ni år efter Pythons første udgivelse (februar 1991) for at forenkle processen med at installere tredjepartspakker i Python. [otte]

Registrering i mappen

Forfattere registrerer selv deres pakker i kataloget (første gang de skal levere data om sig selv) på PyPI [9] :

python setup.py register

Metadataene gemmes normalt i filen setup.py som en del af distributionspakken, og pakken indlæses med en enkelt kommando [10] :

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

De metadata, der kræves til registrering, er dokumenteret i PEP241 [11] (Python Development Proposal) vedtaget i 2001. Påkrævet er: metadataversion, pakkenavn, pakkeversion, platform(er), kort beskrivelse, forfatterens e-mailadresse, licens.

Derudover kan en pakke klassificeres ved hjælp af en eller flere klassifikatorer .

Bibliotekspakkestyringssystemer

Modul distutilsfra Python-standardbiblioteket [12] :

  1. Giver grundlag for standard pakke metadata felter
  2. Indeholder et sæt hjælpeprogrammer til at bygge en pakke og oprette et arkiv til distribution eller et installationsprogram (til Windows )

Mulighederne distutilser begrænset til en enkelt pakke, den har ikke mulighed for at definere afhængigheder.

setuptoolsEt modulbaseret pakkehåndteringssystem distutilsimplementerer det enkleste afhængighedssporingssystem, håndterer pakkeindlæsning og interaktion med PyPI. En pakke setuptoolskan automatisk downloade og installere pakkeafhængigheder.

Easy_install-værktøjet er en tilføjelse til setuptools, og installerer dem under installationen [13] .

Distribute-pakken setuptools adskilt fra projektet , som er aktivt udviklet og understøtter Python 3 [14] .

Det antages [15] at den pakke, der i øjeblikket udvikles baseret på distutilsog vil blive inkluderet i Python-standardbiblioteket. Dette vil bevare kompatibiliteten med den gamle [16] . Distributedistutils2distutils

Pip-værktøjet ligner easy_install [17] .

Eksempel

Følgende eksempel er taget fra filen setup.py i webpy-celery-pakken og er en beskrivelse af de metadata, der er relateret til pakken:

opsætning ( navn = 'webpy-celery' , version = __version__ , url = 'http://github.com/faruken/webpy-celery' , licens = 'BSD' , forfatter = 'Faruk Akgul' , author_email = 'mig@ akgul.org' , description = 'Selleri-indpakning til web.py framework' , long_description = __doc__ , zip_safe = False , packages = find_packages ( ekskluder = [ 'eksempler' , 'tests' ]), platforme = 'any' , install_requires = [ 'web.py>=0.34' , 'selleri>=2.3.0' , ], classifiers = [ 'Miljø::Webmiljø' , 'Tilsigtet målgruppe::Udviklere' , 'Licens::OSI Approved::BSD-licens ' , 'Operativsystem:: OS uafhængig' , 'Programmeringssprog:: Python' , 'Programmeringssprog:: Python:: 2.5' , 'Programmeringssprog:: Python:: 2.6' , 'Programmeringssprog:: Python:: 2.7 ' , 'Emne::Internet::WWW/HTTP::Dynamisk indhold' , 'Emne::Softwareudvikling::Biblioteker::Python-moduler' , ], )

Brug af mappen

Som angivet på PyPI-webstedet, kan du bruge mappen ved hjælp af pip-kommandoen (forudsat at den er forudinstalleret):

pip installer pakkenavn

Eller bare find, download, udpak og kør derefter filen setup.py for at installere den nødvendige pakke:

python setup.py installere

I begge tilfælde vil alle afhængigheder af den pakke, der installeres, automatisk blive fundet og installeret.

Det samme kan gøres med andre hjælpeprogrammer såsom nem installation .

Sikkerhed

PyPI-kataloget tjener som en informationskilde for Python-softwareopdateringssystemer, hvilket uundgåeligt rejser spørgsmålet om informationssikkerhed. Python biblioteksstyringssystemet tillader gensidigt mistroiske udviklere at gøre deres biblioteker tilgængelige for brugerne .  I øjeblikket mangler PyPI en sikkerhedsmekanisme til opdatering af detektion ( eng. update discovery ) og installationsprocessen, men der er TUF ( eng. The Update Framework ) - en prototyperamme til at arbejde med PyPI sikkert ved hjælp af easy_install-værktøjet [19] .   

Noter

  1. Emballagehistorie . pypa.io. _ Hentet 30. marts 2021. Arkiveret fra originalen 16. marts 2021.
  2. Python Package Index Tutorial Arkiveret 23. april 2012. , 2003-09-24, Jeremy Hylton: weblog
  3. TUF: opdateringsrammerne . Hentet 21. juli 2012. Arkiveret fra originalen 8. august 2020.
  4. PyPI - Python-pakkeindekset . Hentet 22. juli 2014. Arkiveret fra originalen 15. april 2018.
  5. Modultællinger . Hentet 22. juli 2014. Arkiveret fra originalen 9. juni 2017.
  6. Python Insider: Ny PyPI lanceret, ældre PyPI lukker ned 30. april . Python Software Foundation (16. april 2018). Hentet 1. juni 2018. Arkiveret fra originalen 23. april 2018.
  7. Et nyt pakkeindeks til Python . LWN.net . Hentet 1. juni 2018. Arkiveret fra originalen 17. maj 2018.
  8. Mark Lutz. Learning Python, 5. udgave . — ISBN ‎978-1449355739. Arkiveret 8. oktober 2021 på Wayback Machine
  9. Barry, 2010 , s. 48.
  10. Alchin, 2010 , s. 241-242.
  11. http://www.python.org/dev/peps/pep-0241/ Arkiveret 27. maj 2012 på Wayback Machine PEP241
  12. Greg Ward, Anthony Baxter, Distributing Python Modules . Hentet 28. juli 2012. Arkiveret fra originalen 25. oktober 2012.
  13. Ziade, 2008 , s. 21-23.
  14. Distribuer (downlink) . Dato for adgang: 28. juli 2012. Arkiveret fra originalen 29. januar 2014. 
  15. The Hitchhiker's Guide to Packaging, Current State of Emballage (link ikke tilgængeligt) . Dato for adgang: 28. juli 2012. Arkiveret fra originalen 24. juli 2014. 
  16. Distutils2 på PyPI . Hentet 28. juli 2012. Arkiveret fra originalen 21. juni 2017.
  17. pip . Hentet 28. juli 2012. Arkiveret fra originalen 2. juni 2017.
  18. Samuel et al., 2010 .
  19. https://www.updateframework.com/wiki/SecuringPythonPackageManagement Arkiveret 17. december 2012. TUF-ramme til sikker opgradering

Links

Litteratur

  • 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 og Roger Dingledine. Overleveligt nøglekompromis i softwareopdateringssystemer  //  Proceedings of the XVII ACM-konference om computer- og kommunikationssikkerhed. - NY, 2010. - S. 61-72 . — ISBN 978-1-4503-0245-6 . - doi : 10.1145/1866307.1866315 .
  • Tarek Ziade. Ekspert Python-programmering. - Packt Publishing, 2008. - 372 s. — ISBN 9781847194947 .