„pip3 freeze“ und „sudo pip3 freeze“ sind unterschiedlich

„pip3 freeze“ und „sudo pip3 freeze“ sind unterschiedlich

Auf meinem System (Raspbian Buster, Raspberry Pi CM4) sind mit „pip3 install“ installierte Pakete nicht verfügbar, wenn ich „sudo python3“ ausführe:

$ pip3 freeze |grep numpy
numpy==1.21.5
$ sudo python3
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'

Es gibt auch einen Unterschied in der Ausgabe von „pip3 freeze“ und „sudo pip3 freeze“:

$ pip3 freeze |grep numpy
numpy==1.21.5
$ sudo pip3 freeze |grep numpy
<no output>

Beide werden von derselben ausführbaren Datei ausgeführt („/usr/bin/pip3“ und „/usr/bin/python3“). Wie kommt es also, dass die Umgebungen dieser beiden Benutzer unterschiedlich sind?

Gibt es eine Möglichkeit, „sudo python3“ zu verwenden und die Pakete trotzdem mit der Benutzerumgebung zu installieren?

ps: Ich kenne virtualenv, würde es aber möglichst nicht verwenden

Antwort1

Vergleichen Sie die Ausgabe von

python3 -m site

Und

sudo python3 -m site

Sie können einen absoluten Pfad zu Moduldateien mit einem Befehl finden

python -c "import numpy as _; print(_.__path__)"

verwandte Informationen