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__)"