Python Language
pip: PyPI Pakketbeheer
Zoeken…
Invoering
pip is de meest gebruikte pakketbeheerder voor de Python-pakketindex, standaard geïnstalleerd bij recente versies van Python.
Syntaxis
- pip <command> [opties] waarbij <command> een van is:
- installeren
- Pakketten installeren
- uninstall
- Pakketten verwijderen
- bevriezen
- Geïnstalleerde pakketten uitvoeren in het vereistenformaat
- lijst
- Lijst geïnstalleerde pakketten
- tonen
- Informatie weergeven over geïnstalleerde pakketten
- zoeken
- Zoek in PyPI naar pakketten
- wiel
- Bouw wielen volgens uw vereisten
- ritssluiting
- Zip individuele pakketten (verouderd)
- uitpakken
- Pak afzonderlijke pakketten uit (verouderd)
- bundel
- Maak pybundles (verouderd)
- helpen
- Help weergeven voor opdrachten
- installeren
Opmerkingen
Soms zal pip
een handmatige compilatie van native code uitvoeren. Op Linux kiest python automatisch een beschikbare C-compiler op uw systeem. Raadpleeg de onderstaande tabel voor de vereiste Visual Studio / Visual C ++ -versie op Windows (nieuwere versies werken niet.).
Python-versie | Visual Studio-versie | Visuele C ++ -versie |
---|---|---|
2.6 - 3.2 | Visual Studio 2008 | Visual C ++ 9.0 |
3.3 - 3.4 | Visual Studio 2010 | Visual C ++ 10.0 |
3.5 | Visual Studio 2015 | Visual C ++ 14.0 |
Pakketten installeren
Om de nieuwste versie van een pakket met de naam SomePackage
te installeren:
$ pip install SomePackage
Om een specifieke versie van een pakket te installeren:
$ pip install SomePackage==1.0.4
Een minimumversie opgeven om te installeren voor een pakket:
$ pip install SomePackage>=1.0.4
Als commando's een fout met geweigerde toestemming op Linux / Unix toont, gebruik dan sudo
met de commando's
Installeren vanuit vereistenbestanden
$ pip install -r requirements.txt
Elke regel van het vereistenbestand geeft aan dat er iets moet worden geïnstalleerd, en net als argumenten voor pip-installatie, vindt u hier details over de bestandsindeling: Vereisten Bestandsindeling .
Na installatie van het pakket kunt u het controleren met freeze
opdracht freeze
:
$ pip freeze
Pakketten verwijderen
Een pakket verwijderen:
$ pip uninstall SomePackage
Alle pakketten weergeven die zijn geïnstalleerd met behulp van `pip`
Geïnstalleerde pakketten weergeven:
$ pip list
# example output
docutils (0.9.1)
Jinja2 (2.6)
Pygments (1.5)
Sphinx (1.1.2)
Om verouderde pakketten weer te geven en de nieuwste beschikbare versie weer te geven:
$ pip list --outdated
# example output
docutils (Current: 0.9.1 Latest: 0.10)
Sphinx (Current: 1.1.2 Latest: 1.1.3)
Upgrade pakketten
Rennen
$ pip install --upgrade SomePackage
zal het pakket SomePackage
en al zijn afhankelijkheden upgraden. Ook verwijdert pip automatisch een oudere versie van het pakket vóór de upgrade.
Om pip zelf te upgraden, doe je
$ pip install --upgrade pip
op Unix of
$ python -m pip install --upgrade pip
op Windows-machines.
Bijwerken van alle verouderde pakketten op Linux
pip
bevat momenteel geen vlag waarmee een gebruiker alle verouderde pakketten in één keer kan bijwerken. Dit kan echter worden bereikt door commando's samen te voegen in een Linux-omgeving:
pip list --outdated --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
Deze opdracht neemt alle pakketten in de lokale virtualenv en controleert of ze verouderd zijn. Uit die lijst haalt het de pakketnaam op en stuurt dit vervolgens naar een pip install -U
commando. Aan het einde van dit proces moeten alle lokale pakketten worden bijgewerkt.
Bijwerken van alle verouderde pakketten op Windows
pip
bevat momenteel geen vlag waarmee een gebruiker alle verouderde pakketten in één keer kan bijwerken. Dit kan echter worden bereikt door commando's samen te voegen in een Windows-omgeving:
for /F "delims= " %i in ('pip list --outdated --local') do pip install -U %i
Deze opdracht neemt alle pakketten in de lokale virtualenv en controleert of ze verouderd zijn. Uit die lijst haalt het de pakketnaam op en stuurt dit vervolgens naar een pip install -U
commando. Aan het einde van dit proces moeten alle lokale pakketten worden bijgewerkt.
Maak een requirements.txt-bestand van alle pakketten op het systeem
pip
helpt bij het maken van requirements.txt
bestanden door de optie freeze
bieden.
pip freeze > requirements.txt
Hiermee wordt een lijst van alle pakketten en hun versie op het systeem opgeslagen in een bestand met de naam requirements.txt
in de huidige map.
Maak een requirements.txt-bestand van pakketten alleen in de huidige virtualenv
pip
helpt bij het maken van requirements.txt
bestanden door de optie freeze
bieden.
pip freeze --local > requirements.txt
De parameter --local
geeft alleen een lijst met pakketten en versies die lokaal op een virtualenv zijn geïnstalleerd. Wereldwijde pakketten worden niet vermeld.
Een bepaalde Python-versie met pip gebruiken
Als zowel Python 3 als Python 2 zijn geïnstalleerd, kunt u opgeven welke versie van Python u wilt gebruiken. Dit is handig wanneer pakketten alleen Python 2 of 3 ondersteunen of wanneer u met beide wilt testen.
Als je pakketten voor Python 2 wilt installeren, voer je een van beide uit:
pip install [package]
of:
pip2 install [package]
Als u pakketten voor Python 3 wilt installeren, doet u het volgende:
pip3 install [package]
U kunt ook de installatie van een pakket voor een specifieke python-installatie oproepen met:
\path\to\that\python.exe -m pip install some_package # on Windows OR
/usr/bin/python25 -m pip install some_package # on OS-X/Linux
Op OS-X / Linux / Unix-platforms is het belangrijk om rekening te houden met het onderscheid tussen de systeemversie van python (waardoor upgraden uw systeem onbruikbaar maakt) en de gebruikersversie van python. U kunt, afhankelijk van welke u probeert te upgraden, noodzaak om deze opdrachten voorvoegsel sudo
en het invoeren van een wachtwoord.
Op dezelfde manier kunnen sommige python-installaties in Windows, met name die welke deel uitmaken van een ander pakket, worden geïnstalleerd in systeemmappen - die u moet upgraden vanuit een opdrachtvenster dat wordt uitgevoerd in de beheerdersmodus - als u vindt dat het lijkt alsof u doe dit het is een heel goed idee om te controleren welke python-installatie je probeert te upgraden met een commando zoals python -c"import sys;print(sys.path);"
of py -3.5 -c"import sys;print(sys.path);"
je kunt ook controleren welke pip je probeert uit te voeren met pip --version
Als u in Windows zowel python 2 als python 3 hebt geïnstalleerd, en op uw pad en uw python 3 groter is dan 3.4, hebt u waarschijnlijk ook de python launcher py
op uw systeempad. Je kunt dan trucs doen zoals:
py -3 -m pip install -U some_package # Install/Upgrade some_package to the latest python 3
py -3.3 -m pip install -U some_package # Install/Upgrade some_package to python 3.3 if present
py -2 -m pip install -U some_package # Install/Upgrade some_package to the latest python 2 - 64 bit if present
py -2.7-32 -m pip install -U some_package # Install/Upgrade some_package to python 2.7 - 32 bit if present
Als u meerdere versies van python gebruikt en onderhoudt, raad ik u ten zeerste aan meer te lezen over de virtuele omgevingen python virtualenv
of venv
waarmee u zowel de versie van python kunt isoleren als welke pakketten aanwezig zijn.
Pakketten nog niet op pip als wielen installeren
Veel, pure python, pakketten zijn nog niet beschikbaar op de Python Pakketindex als wielen, maar kunnen nog steeds prima worden geïnstalleerd. Sommige pakketten op Windows geven echter de gevreesde vcvarsall.bat niet gevonden fout.
Het probleem is dat het pakket dat u probeert te installeren een C- of C ++ -extensie bevat en momenteel niet beschikbaar is als een vooraf gebouwd wiel uit de python-pakketindex, pypi , en op Windows hebt u niet de gereedschapsketen die nodig is om te bouwen dergelijke items.
Het eenvoudigste antwoord is om naar de uitstekende site van Christoph Gohlke te gaan en de juiste versie van de bibliotheken te vinden die u nodig hebt. Bij de pakketnaam moet a -cp NN - in overeenstemming zijn met uw versie van python, dwz als u Windows 32-bits python gebruikt, zelfs op win64, moet de naam -win32- bevatten en als u de 64-bits python gebruikt, moet deze -win_amd64 bevatten - en dan is de python versie moet overeenkomen, dat wil zeggen voor Python 34 de bestandsnaam moet -cp onder 34-, enz. dit is in feite de magie die pip voor je doet op de pypi terrein.
Als alternatief moet u de juiste Windows-ontwikkelingskit aanschaffen voor de versie van python die u gebruikt, de headers voor elke bibliotheek waarmee het pakket dat u probeert te bouwen interfaces naar, mogelijk de python headers voor de versie van python, enz.
Python 2.7 gebruikte Visual Studio 2008, Python 3.3 en 3.4 gebruikte Visual Studio 2010 en Python 3.5+ gebruikt Visual Studio 2015.
- Installeer " Visual C ++ Compiler-pakket voor Python 2.7 ", dat beschikbaar is op de website van Microsoft of
- Installeer " Windows SDK voor Windows 7 en .NET Framework 4 " (v7.1), die beschikbaar is op de website van Microsoft of
- Installeer Visual Studio 2015 Community Edition , (of een latere versie, wanneer deze worden vrijgegeven) , zorg ervoor dat u de opties selecteert om C & C ++ ondersteuning te installeren, niet langer de standaardinstelling - er is mij verteld dat het tot 8 uur kan duren om te downloaden en te installeren dus zorg ervoor dat die opties bij de eerste poging zijn ingesteld.
Dan moet u mogelijk de koptekstbestanden zoeken bij de bijbehorende revisie voor alle bibliotheken waarnaar uw gewenste pakket linkt en deze naar een geschikte locatie downloaden.
Eindelijk kun je pip je build laten doen - natuurlijk als het pakket afhankelijkheden heeft die je nog niet hebt, moet je misschien ook de header-bestanden voor hen vinden.
Alternatieven: Het is ook de moeite waard om te kijken, zowel op pypi als op de site van Christophe , want elke iets eerdere versie van het pakket die u zoekt, is pure python of vooraf gebouwd voor uw platform en python-versie en mogelijk met behulp van die, als gevonden, totdat uw pakket beschikbaar komt. Ook als u gebruik maakt van de meest recente versie van python kunt u vinden dat het duurt het pakket onderhouders een beetje tijd in te halen, zodat voor projecten die echt een specifiek pakket dat u kan hebben om een iets oudere python gebruiken voor het moment nodig hebben. Je kunt ook de bronsite van de pakketten bekijken om te zien of er een gevorkte versie is die vooraf gebouwd of als pure python beschikbaar is en zoekt naar alternatieve pakketten die de functionaliteit bieden die je nodig hebt maar beschikbaar zijn - een voorbeeld dat in je opkomt is de Kussen , actief onderhouden , vervanging voor PIL is momenteel niet bijgewerkt in 6 jaar en niet beschikbaar voor python 3 .
Nawoord , ik zou iedereen die dit probleem heeft aanmoedigen om naar de bug-tracker voor het pakket te gaan en een kaartje toe te voegen of te verhogen als er nog geen is, waarin de pakketbeheerders beleefd wordt gevraagd om een wiel op pypi voor uw specifieke combinatie van platform en python, als dit wordt gedaan, worden dingen normaal gesproken na verloop van tijd beter, sommige pakketbeheerders realiseren zich niet dat ze een bepaalde combinatie hebben gemist die mensen mogelijk gebruiken.
Opmerking over het installeren van pre-releases
Pip volgt de regels van Semantic Versioning en geeft standaard de voorkeur aan vrijgegeven pakketten boven pre-releases. Dus als een bepaald pakket is vrijgegeven als V0.98
en er is ook een V1.0-rc1
het standaardgedrag van pip install
het installeren van V0.98
- als u de V0.98
wilt installeren, wordt u geadviseerd om eerst in een virtuele omgeving te testen , kunt u dit doen met --pip install --pre
pakketnaam of --pip install --pre --upgrade
pakketnaam . In veel gevallen hebben pre-releases of releasekandidaten mogelijk geen wielen gebouwd voor alle platform- en versiecombinaties, zodat u de bovenstaande problemen waarschijnlijk tegenkomt.
Opmerking over het installeren van ontwikkelingsversies
Je kunt pip ook gebruiken om ontwikkelingsversies van pakketten van github en andere locaties te installeren, omdat dergelijke code in beweging is, is het zeer onwaarschijnlijk dat er wielen voor worden gebouwd, dus voor onzuivere pakketten is de aanwezigheid van de build-tools vereist, en ze kunnen op elk moment worden verbroken, zodat de gebruiker sterk wordt aangemoedigd dergelijke pakketten alleen in een virtuele omgeving te installeren.
Er zijn drie opties voor dergelijke installaties:
- Download gecomprimeerde momentopname, de meeste online versiebeheersystemen hebben de optie om een gecomprimeerde momentopname van de code te downloaden. Dit kan handmatig worden gedownload en vervolgens worden geïnstalleerd met het
pip install
/ naar / gedownload / bestand. Let op dat pip voor de meeste compressieformaten het uitpakken naar een cachegebied, etc. afhandelt. - Laat pip het downloaden en installeren voor u
--trusted-host
met:pip install
URL / of / package / repository - mogelijk moet u ook de--trusted-host
,--client-cert
en / of--proxy
om dit te laten werken correct, vooral in een zakelijke omgeving. bijvoorbeeld:
> py -3.5-32 -m venv demo-pip
> demo-pip\Scripts\activate.bat
> python -m pip install -U pip
Collecting pip
Using cached pip-9.0.1-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 8.1.1
Uninstalling pip-8.1.1:
Successfully uninstalled pip-8.1.1
Successfully installed pip-9.0.1
> pip install git+https://github.com/sphinx-doc/sphinx/
Collecting git+https://github.com/sphinx-doc/sphinx/
Cloning https://github.com/sphinx-doc/sphinx/ to c:\users\steve-~1\appdata\local\temp\pip-04yn9hpp-build
Collecting six>=1.5 (from Sphinx==1.7.dev20170506)
Using cached six-1.10.0-py2.py3-none-any.whl
Collecting Jinja2>=2.3 (from Sphinx==1.7.dev20170506)
Using cached Jinja2-2.9.6-py2.py3-none-any.whl
Collecting Pygments>=2.0 (from Sphinx==1.7.dev20170506)
Using cached Pygments-2.2.0-py2.py3-none-any.whl
Collecting docutils>=0.11 (from Sphinx==1.7.dev20170506)
Using cached docutils-0.13.1-py3-none-any.whl
Collecting snowballstemmer>=1.1 (from Sphinx==1.7.dev20170506)
Using cached snowballstemmer-1.2.1-py2.py3-none-any.whl
Collecting babel!=2.0,>=1.3 (from Sphinx==1.7.dev20170506)
Using cached Babel-2.4.0-py2.py3-none-any.whl
Collecting alabaster<0.8,>=0.7 (from Sphinx==1.7.dev20170506)
Using cached alabaster-0.7.10-py2.py3-none-any.whl
Collecting imagesize (from Sphinx==1.7.dev20170506)
Using cached imagesize-0.7.1-py2.py3-none-any.whl
Collecting requests>=2.0.0 (from Sphinx==1.7.dev20170506)
Using cached requests-2.13.0-py2.py3-none-any.whl
Collecting typing (from Sphinx==1.7.dev20170506)
Using cached typing-3.6.1.tar.gz
Requirement already satisfied: setuptools in f:\toolbuild\temp\demo-pip\lib\site-packages (from Sphinx==1.7.dev20170506)
Collecting sphinxcontrib-websupport (from Sphinx==1.7.dev20170506)
Downloading sphinxcontrib_websupport-1.0.0-py2.py3-none-any.whl
Collecting colorama>=0.3.5 (from Sphinx==1.7.dev20170506)
Using cached colorama-0.3.9-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from Jinja2>=2.3->Sphinx==1.7.dev20170506)
Using cached MarkupSafe-1.0.tar.gz
Collecting pytz>=0a (from babel!=2.0,>=1.3->Sphinx==1.7.dev20170506)
Using cached pytz-2017.2-py2.py3-none-any.whl
Collecting sqlalchemy>=0.9 (from sphinxcontrib-websupport->Sphinx==1.7.dev20170506)
Downloading SQLAlchemy-1.1.9.tar.gz (5.2MB)
100% |################################| 5.2MB 220kB/s
Collecting whoosh>=2.0 (from sphinxcontrib-websupport->Sphinx==1.7.dev20170506)
Downloading Whoosh-2.7.4-py2.py3-none-any.whl (468kB)
100% |################################| 471kB 1.1MB/s
Installing collected packages: six, MarkupSafe, Jinja2, Pygments, docutils, snowballstemmer, pytz, babel, alabaster, imagesize, requests, typing, sqlalchemy, whoosh, sphinxcontrib-websupport, colorama, Sphinx
Running setup.py install for MarkupSafe ... done
Running setup.py install for typing ... done
Running setup.py install for sqlalchemy ... done
Running setup.py install for Sphinx ... done
Successfully installed Jinja2-2.9.6 MarkupSafe-1.0 Pygments-2.2.0 Sphinx-1.7.dev20170506 alabaster-0.7.10 babel-2.4.0 colorama-0.3.9 docutils-0.13.1 imagesize-0.7.1 pytz-2017.2 requests-2.13.0 six-1.10.0 snowballstemmer-1.2.1 sphinxcontrib-websupport-1.0.0 sqlalchemy-1.1.9 typing-3.6.1 whoosh-2.7.4
Let op het voorvoegsel git+
voor de URL.
- Kloon de repository met behulp van
git
,mercurial
of een ander acceptabel hulpmiddel, bij voorkeur een DVCS-hulpmiddel, en gebruik hetpip install
/ naar / gekloond / repo - dit zal beide elk vereist Imperium- bestand verwerken en de bouw- en instellingsstappen uitvoeren, je kunt handmatig wijzigen map naar uw gekloonde repository en voerpip install -r requires.txt
python setup.py install
en vervolgenspython setup.py install
uit om hetzelfde effect te krijgen. Het grote voordeel van deze aanpak is dat, hoewel de initiële kloonbewerking langer kan duren dan de snapshot-download, je kunt updaten naar de nieuwste versie, in het geval van git:git pull origin master
en als de huidige versie fouten bevat, kun jepip uninstall
pakketnaam gebruik vervolgensgit checkout
opdrachten om terug te gaan door de repositorygeschiedenis naar eerdere versie (s) en probeer het opnieuw.