В общем, внесение изменений в установку для ваших пользователей - плохая идея.Их система находится под их контролем, и если они решат, что не хотят устанавливать дополнительные пакеты и, следовательно, не смогут использовать ваш сценарий, это обычно остается за ними.
Использование для них sudo
это еще хуже идея, и может быть обнаружена как атака.Что если вы допустили какую-то странную ошибку в своем коде и sudo rm -r
их жестком диске?Уважайте иерархию разрешений - глобальные установки зависят от прав суперпользователя, локальные и запуск сценария - от пользователя, и выполнение именно той работы, которую обещанный сценарий, зависит от вас - с учетом всех требований (которыетакже должен быть в списке).
Сам import
сделан не в Makefile, а в вашем скрипте Python.Вот где я обнаружил бы это и выдал ошибку, которая сообщает пользователю, что ему нужно сделать.Так что в вашем скрипте у меня будет что-то вроде:
try:
import xslwriter
#Add as as many imports as you would like to check for.
except ModuleNotFoundError as e:
print("-E- Failed to import prerequisite {}. Please install prior to running this script.".format(e.name))
exit(1)
Вы также можете print
предложения для установки (Определите os
и решите, предложите ли вы yum
или apt
(если Linux)аромат, а не Windows), используя pip
, который всегда работает и т. д.).
exit(1)
указывает на то, что ваша программа остановилась с ошибкой, а также не выполнит рецепт Makefile.Таким образом, скрипт правильно предупреждает и работает как отдельный.