ubuntuusers.de

PYTHON: pip / alle Pakete aktualisieren (Wiki-Anleitung)

Status: Gelöst | Ubuntu-Version: Kubuntu 20.04 (Focal Fossa)
Antworten |

michahe

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 857

Hallo,

nach der Wiki-Anleitung möchte ich alle pip-Pakete aktualisieren. Zwei Probleme:

  1. grep-Befehl

pip3 freeze --user | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip3 install --upgrade
grep: Warnung: überzähliges \ vor -

Nur eine Warnung, aber so funktioniert es ohne:

pip freeze --user | grep -v '^-e' | cut -d = -f 1  | xargs -n1 pip install --upgrade

2. Die UPgrades sind nicht vollständig! Nach Ausführung des o.g. Befehls Prüfung auf veraltete Pakete: Trotzdem noch 7 Stück:

$ pip list --outdated
Package            Version Latest Type
------------------ ------- ------ -----
geographiclib      1.52    2.0    wheel
importlib-metadata 4.9.0   5.0.0  wheel
jaraco.text        3.9.1   3.10.0 wheel
more-itertools     8.13.0  9.0.0  wheel
PyICU              2.9     2.10.1 sdist
python-steamgriddb 1.0.4   1.0.5  sdist
wxPython           4.1.1   4.2.0  sdist

jetzt ein UPgrade einzeln:

$ pip install PyICU --upgrade
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: PyICU in /usr/lib/python3.10/site-packages (2.9)
Collecting PyICU
  Downloading PyICU-2.10.1.tar.gz (255 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: PyICU
  Building wheel for PyICU (pyproject.toml) ... done
  Created wheel for PyICU: filename=PyICU-2.10.1-cp310-cp310-linux_x86_64.whl size=1779603 sha256=5cdb84c09791ed32a4cfed696912c734dc3777921678de438e9789c596b89642
  Stored in directory: /home/hessler/.cache/pip/wheels/b3/27/4e/762fc43e9bc6bccf77a850df8f7a83535ac08637ff59d3c129
Successfully built PyICU
Installing collected packages: PyICU
Successfully installed PyICU-2.10.1

Prüfung auf veraltete Pakete: nur noch 6 Stück:

$ pip list --outdated
Package            Version Latest Type
------------------ ------- ------ -----
geographiclib      1.52    2.0    wheel
importlib-metadata 4.9.0   5.0.0  wheel
jaraco.text        3.9.1   3.10.0 wheel
more-itertools     8.13.0  9.0.0  wheel
python-steamgriddb 1.0.4   1.0.5  sdist
wxPython           4.1.1   4.2.0  sdist

Meine Fragen:

  • Welcher grep-Befehl ist "richtig"?

  • Warum funktioniert es einzeln, nicht aber mit dem Wiki-Befehl für alle Pakete?

  • Was muss ich ändern, um alle Pakete auf einmal zu aktualisieren?

Axel-Erfurt

Anmeldungsdatum:
18. Mai 2016

Beiträge: 1347

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1559

Wohnort: Bad Oeynhausen

michahe schrieb:

Hallo,

nach der Wiki-Anleitung möchte ich alle pip-Pakete aktualisieren. Zwei Probleme:

Dazu sollte in der Dikussion des Artikels geschrieben werden.

  1. grep-Befehl

pip3 freeze --user | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip3 install --upgrade
grep: Warnung: überzähliges \ vor -

Nur eine Warnung, aber so funktioniert es ohne:

pip freeze --user | grep -v '^-e' | cut -d = -f 1  | xargs -n1 pip install --upgrade

Ich weiß nicht, was grep da überhaupt für eine Funktion hat. Führe mal das aus:

pip3 freeze --user | cut -d = -f 1 | xargs -n 1 echo "Package:"

Das dürfte alle Pakete zeigen, die beim Einsatz von pip3 install aktualisiert werden.

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 857

karzer schrieb:

... Führe mal das aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
$ pip3 freeze --user | cut -d = -f 1 | xargs -n 1 echo "Package:"
Package: asttokens
Package: attrs
Package: backcall
Package: black
Package: click
Package: cmd2
Package: colorama
Package: decorator
Package: defusedxml
Package: distro
Package: executing
Package: ezodf
Package: geographiclib
Package: geopy
Package: gpx-cmd-tools
Package: gpxpy
Package: inflect
Package: ipython
Package: jedi
Package: lit
Package: matplotlib-inline
Package: mutagen
Package: mypy-extensions
Package: numpy
Package: pandas
Package: pandas-ods-reader
Package: parso
Package: pathspec
Package: pexpect
Package: pickleshare
Package: pikepdf
Package: platformdirs
Package: plotly
Package: prompt-toolkit
Package: psycopg2
Package: ptyprocess
Package: pure-eval
Package: pycodestyle
Package: pycryptodomex
Package: Pygments
Package: PyICU
Package: pyperclip
Package: PySide6
Package: PySide6-Addons
Package: PySide6-Essentials
Package: PySimpleGUI
Package: python-mpv
Package: pytz
Package: shiboken6
Package: stack-data
Package: tenacity
Package: traitlets
Package: trove-classifiers
Package: typing_extensions
Package: wcwidth
Package: zipp
$

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 857

Danke Axel-Erfurt,

https://github.com/Axel-Erfurt/pip-upgrade-outdated-user-modules

$ python3 pip_update_outdated.py
Python Version: 3.8.1
Welcome
searching for outdated modules ...
pip Version: 20.0.2
pVersion: 3
0 Updates available
no upgrade needed
###################################
Upgrade finished
Goodbye ...

$ pip list --outdated
Package            Version Latest Type
------------------ ------- ------ -----
geographiclib      1.52    2.0    wheel
importlib-metadata 4.9.0   5.0.0  wheel
jaraco.text        3.9.1   3.10.0 wheel
more-itertools     8.13.0  9.0.0  wheel
python-steamgriddb 1.0.4   1.0.5  sdist
wxPython           4.1.1   4.2.0  sdist

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1559

Wohnort: Bad Oeynhausen

michahe schrieb:

karzer schrieb:

... Führe mal das aus:

[...]

Da siehst Du, das die entsprechenden Pakete gar nicht enthalten sind, also auch nicht aktualisiert werden können.

Nun kannst Du das ganze auch einfach mit der outdated-Liste machen:

pip3 list --outdated | tail -n +3 | cut -d' ' -f 1 | xargs -n 1 echo "Package:"

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1559

Wohnort: Bad Oeynhausen

Außerdem, warum nutzt Du immer pip statt pip3?

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 857

Danke karzer, aber ich verstehe Dich nicht.

Da siehst Du, das die entsprechenden Pakete gar nicht enthalten sind, also auch nicht aktualisiert werden können.

Beispiel "geographiclib":

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 857

Außerdem habe ich versucht:

$ pip freeze >   mypackages.txt
$ pip install -r mypackages.txt --upgrade

Die genannten sechs Pakete bleiben outdated ...

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1559

Wohnort: Bad Oeynhausen

michahe schrieb:

Danke karzer, aber ich verstehe Dich nicht.

Da siehst Du, das die entsprechenden Pakete gar nicht enthalten sind, also auch nicht aktualisiert werden können.

Beispiel "geographiclib": [...]

Das stimmt, das hatte ich übersehen, aber jaraco.text oder wxPython sind nicht da. Listest denn der Befehl mit der Outdated-Liste alle Pakete, die Dir fehlen?

Dann müsste

pip3 list --outdated | tail -n +3 | cut -d' ' -f 1 | xargs -n 1 pip3 install --upgrade

die Updates installieren.

michahe schrieb:

Außerdem habe ich versucht:

$ pip freeze >   mypackages.txt
$ pip install -r mypackages.txt --upgrade

Das kann unmöglich funktionieren. Bei pip freeze sind ja Versionsangaben dabei, deshalb ja das cut.

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 857

Danke karzer,

Außerdem habe ich versucht:

$ pip freeze >   mypackages.txt
$ pip install -r mypackages.txt --upgrade

Das kann unmöglich funktionieren. Bei pip freeze sind ja Versionsangaben dabei, deshalb ja das cut.

macht Sinn, ich habe die Liste mypackages.txt manuell um die Versionsangaben gekürzt, gespeichert und

$ pip install -r mypackages.txt --upgrade

ausgeführt, die sechs Pakete bleiben outdated.

Nach:

pip3 list --outdated | tail -n +3 | cut -d' ' -f 1 | xargs -n 1 pip3 install --upgrade

ist's nur noch ein Paket:

$ pip list --outdated
Package  Version Latest Type
-------- ------- ------ -----
wxPython 4.1.1   4.2.0  sdist
$

Manueller Versuch (zur Zeit auf einem KeinUBUNTU-System:

$ pip install --upgrade wxPython
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: wxPython in /usr/lib/python3.10/site-packages (4.1.1)
Collecting wxPython
  Using cached wxPython-4.2.0.tar.gz (71.0 MB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [8 lines of output]
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-u5e0tr7w/wxpython_e8058e75ce624610aa60096d4ea7d757/setup.py", line 27, in <module>
          from buildtools.config import Config, msg, opj, runcmd, canGetSOName, getSOName
        File "/tmp/pip-install-u5e0tr7w/wxpython_e8058e75ce624610aa60096d4ea7d757/buildtools/config.py", line 30, in <module>
          from attrdict import AttrDict
      ModuleNotFoundError: No module named 'attrdict'
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

Macht Sinn, wxpython ist hier aus dem Repository installiert.

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1559

Wohnort: Bad Oeynhausen

Dann passt das ja hier. Würde dann auf gelöst setzen, den Befehl im Artikel pip kannst Du gerne ändern.

Antworten |