Библиотеки Python Makefile - PullRequest
       10

Библиотеки Python Makefile

0 голосов
/ 19 марта 2019

Хотя это может показаться тривиальным, как мне импортировать библиотеки в make-файлы Python?

Я создаю базовый make-файл Python, такой как:

all: my_file.py
    python3 my_file.py

Однако я использую определенные библиотеки внутри my_file.py, не входит / не импортируется в базовый пакет, например: xlswriter.Поэтому, если кто-то пытается запустить код, он должен напечатать в терминале что-то похожее на:

$ sudo apt-get install python3-xlsxwriter

Поэтому мой вопрос заключается в том, как адаптировать мой Makefile, чтобы внешнему пользователю было достаточно запустить только программупо команде $ make (и она автоматически приступает к установке пакета).Заранее спасибо!

1 Ответ

2 голосов
/ 20 марта 2019

В общем, внесение изменений в установку для ваших пользователей - плохая идея.Их система находится под их контролем, и если они решат, что не хотят устанавливать дополнительные пакеты и, следовательно, не смогут использовать ваш сценарий, это обычно остается за ними.

Использование для них 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.Таким образом, скрипт правильно предупреждает и работает как отдельный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...