«pip3 freeze» и «sudo pip3 freeze» — это разные команды

«pip3 freeze» и «sudo pip3 freeze» — это разные команды

В моей системе (Raspbian Buster, raspberry pi CM4) пакеты, установленные с помощью «pip3 install», недоступны при запуске «sudo python3»:

$ 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'

Также есть разница в выводе команд «pip3 freeze» и «sudo pip3 freeze»:

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

Оба запускаются из одного и того же исполняемого файла ('/usr/bin/pip3' и '/usr/bin/python3'), так почему же среды этих двух пользователей различаются?

Есть ли способ использовать «sudo python3» и при этом установить пакеты в пользовательской среде?

ps: Я знаю о virtualenv, но я бы предпочел не использовать его, если это возможно

решение1

сравните вывод

python3 -m site

и

sudo python3 -m site

Абсолютный путь к файлам модуля можно узнать с помощью команды

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

Связанный контент