Почему не находит установленный модуль?
pip install psutil
Установил psutil, далее запускаю скрипт в котором импортирован данный модуль:
python3.13 /var/www/script.py
Ругается – не находит данный модуль:
No module named 'psutil'
В чём дело?
Ответы (1 шт):
UPDATE я немного подумал, и понял, что написанное ниже - технически верно, но устарело по духу.
Не нужно устанавливать что-либо в глобальный пайтон, будь то системный, установленный через apt, или доставленный самостоятельно. Через некоторое время пакеты устареют, их обновление с почти 100% вероятностью начнёт приводить к конфликтам. В результате код, который работал, вдруг работать перестанет. Это так больно и муторно расследовать!
Поэтому ставить нужно только в venv! Создаете для своего проекта окружение, активируете его, и ставьте всё, что угодно. Вы и только вы контролируете состав пакетов и их настройки. При необходимости обновляете пакеты тоже вы, и если вдруг что-то сломается, будет понятно что и к каким версиям откатывать.
ИТОГО: не пользуйтесь глобальным pip! пользуйтесь только и исключительно venv.
ОТВЕТ НА ВОПРОС
Дабы точно знать, какой именно вариант пайитона установил пакет, я вызываю не команду pip
, а модуль pip
, да ещё и с полным путем, дабы наверняка:
/usr/local/bin/python3.13 -m pip install ...
Python - штука такая, в системе может встречаться более одного: один установлен с системой, пара других доставлены со временем, плюс несколько виртуальных окружений в проектах. Я ещё помню дикие времена, когда в системе одновременно были python
и python3
, и это были разные! версии пайтона - python == python2.7
. Соответственно, команда pip
ставила пакеты в python2.7
, а для третьего пайтона была команда pip3
. Поэтому и сформировалась привычка ставить через -m pip
- так оно вернее. И даже venv оказался бессилен: как ставил через -m pip
, так и ставлю )
Так вот, если вы установили что-то пайтоновское через apt, то вы установили в системный Пайтон, который /usr/bin/python3
, и это совершенно точно не python3.13
. Поэтому либо пользуйтесь системным пайтоном, либо установите через -m pip
в нужный вам.