Wat is de manier om een pakket bij te werken met pip?
die werken niet:
pip update
pip upgrade
Ik weet dat dit een simpele vraag is, maar het is nodig omdat het niet zo gemakkelijk te vinden is (pip documentatie verschijnt niet en andere vragen van stack overflow zijn relevant, maar gaan daar niet precies over)
Antwoord 1, autoriteit 100%
De weg is
pip install <package_name> --upgrade
of in het kort
pip install <package_name> -U
Als u sudo
gebruikt, wordt u gevraagd uw root-wachtwoord in te voeren om de actie te bevestigen, maar hoewel dit gebruikelijk is, wordt het beschouwd als onveilig.
Als je geen root-wachtwoord hebt (als je niet de beheerder bent), zou je waarschijnlijk moeten werken met virtualenv.
U kunt ook de gebruikersvlag gebruiken om deze alleen op deze gebruiker te installeren.
pip install <package_name> --upgrade --user
Antwoord 2, autoriteit 6%
Voor een niet-specifiek pakket en een meer algemene oplossing kun je pip-review. Een tool die controleert welke pakketten kunnen/moeten worden bijgewerkt.
Installeren:
$ pip install pip-review
Voer vervolgens uit:
$ pip-review --interactive
requests==0.14.0 is available (you have 0.13.2)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y
Antwoord 3, autoriteit 3%
gebruik deze code in teminal :
python -m pip install --upgrade PAKAGE_NAME #instead of PAKAGE_NAME
ik wil bijvoorbeeld pip-pakket updaten:
python -m pip install --upgrade pip
meer voorbeeld:
python -m pip install --upgrade selenium
python -m pip install --upgrade requests
...
Antwoord 4, autoriteit 2%
tl;dr script om alle geïnstalleerde pakketten bij te werken
Als je maar één pakket wilt upgraden, raadpleeg dan @borgr’s antwoord. Ik vind het vaak nodig, of in ieder geval prettig, om al mijn pakketten in één keer te upgraden. Momenteel ondersteunt pip die actie niet standaard, maar met sh-scripting is het eenvoudig genoeg. Je gebruikt pip list
, awk
(of cut
en tail
), en commando substitutie. Mijn normale oneliner is:
for i in $(pip list -o | awk 'NR > 2 {print $1}'); do sudo pip install -U $i; done
Hierdoor wordt om het root-wachtwoord gevraagd. Als je daar geen toegang toe hebt, de --user
optie van pip
of virtualenv misschien iets om naar te kijken.
Antwoord 5, autoriteit 2%
import subprocess as sbp
import pip
pkgs = eval(str(sbp.run("pip3 list -o --format=json", shell=True,
stdout=sbp.PIPE).stdout, encoding='utf-8'))
for pkg in pkgs:
sbp.run("pip3 install --upgrade " + pkg['name'], shell=True)
Opslaan als xx.py
Voer vervolgens Python3 xx.py uit
Omgeving: python3.5+ pip10.0+
Antwoord 6
Hoewel off-topic, kan men deze vraag bereiken door pip zelf te updaten (zie hier).
Om pip voor Python3.4+ te upgraden, moet je pip3 als volgt gebruiken:
sudo pip3 install pip --upgrade
Hiermee wordt pip geüpgraded op: /usr/local/lib/python3.X/dist-packages
Anders, om pip voor Python2.7 te upgraden, zou je pip als volgt gebruiken:
sudo pip install pip --upgrade
Hiermee wordt pip geüpgraded op: /usr/local/lib/python2.7/dist-packages