Я думаю, вы можете получить то, что вам нужно, в виртуальной среде.
Вам необходимо создать виртуальную среду специально для этого сценария. Вы установите все необходимые вам пакеты с нужными версиями в этой среде. Пока вы запускаете свой сценарий с этой виртуальной средой, все будет доступно. См. Документацию venv здесь
Чтобы создать виртуальную среду, вы запускаете python3 -m venv <your_venv_path>
с путем, где вы находитесь хотите сохранить его, например, ~ / .venvs / my_project /
Чтобы установить пакеты, вы должны сначала сделать его активным, а затем запустить pip
source <your_venv_path>/bin/activate
pip install png_util
Здесь у вас будет ваша виртуальная среда готов и ваш пакет установлен. Если вы запустите свой сценарий с активной виртуальной средой, пакет будет доступен.
Теперь, поскольку ваш сценарий является демоном , именно так вы убедитесь, что он работает в вашей виртуальной среде . По сути, виртуальная среда создает копию Python в, и вы просто добавляете в свой скрипт инструкцию по использованию этой «копии» python. Вы делаете это, просто добавляя #!<your_venv_path>/bin/python
в качестве первой строки вашего скрипта.
Таким образом, когда ваш скрипт запускается, он запускается в той виртуальной среде, где установлены все пакеты.
PS : Потенциально все может работать, просто запустив pip от sudo, потому что он установит пакетную систему в целом и сделает ее доступной для всех пользователей. Но этот вариант крайне нежелателен из-за угроз безопасности, которые он создает, см. Этот пост с рисками безопасности при запуске sudo pip
Надеюсь, это поможет !!