Вопрос 1 легко:
Как узнать, какая операционная система на компьютере, на котором выполняется в Python?
Это sys.platform
:
if sys.platform.startswith('win') or sys.platform.startswith('cygwin'):
do_windows_stuff()
elif sys.platform.startswith('darwin'):
do_osx_stuff()
elif sys.platform.startswith('linux'):
do_linux_stuff()
else:
raise Exception("Nobody's written the stuff for {}, sorry".format(sys.platform))
Вторая часть также легко, но не так, как вы хотели бы услышать:
Как сделать скрипт запуска при старте (Linux, Mac OSX, Windows)
У вас нет. Не изнутри скрипта. Вы используете какой-то установщик (или сценарий постфайлов пакета или что-то еще).
Добавление элементов, запускаемых при запуске, требует прав root/admin. Ваш сценарий (надеюсь) не работает с такими правами. Поэтому он не может этого сделать. Да, возможно повысить привилегии различными способами, но это почти наверняка не то, что вы хотите сделать в сценарии, который будет запущен при запуске.
Итак, как это делает ваш установщик?
OS X: Вам необходимо создать Daunch Daemon с сопроводительным плагином запуска. Это описано в Creating Launch Daemons and Agents. Вы не должны пытаться это сделать, если вы не читали эту статью, и вы уже знаете, как читать эту статью, так что еще нечего сказать.
Windows: официальный способ сделать это объясняется в Run and RunOnce Registry Keys. Опять же, вы не должны делать этого, не читая эту статью, и после прочтения статьи это довольно очевидно, за исключением двух вещей: во-первых, из четырех ключей это ключ запуска HKLM. Во-вторых, в современных Windows это фактически не запускается при запуске, но при первом входе в систему после запуска; если это неприемлемо, посмотрите на RunServices
.
Linux: Что такое установщик? И ожидали ли вы одного из способов сделать это для каждой семьи дистрибутивов? This primer предоставляет вам большую часть необходимой информации, за исключением того, что вы точно знаете, что хотите делать в каждом дистрибутиве. В общем, если вы просто хотите, чтобы ваш скрипт запускался один раз и завершался, и есть rc.local.d
, и вам просто нужно удалить ссылку.В противном случае вам необходимо создать сценарий rc.d
, установить его в нужное место и запустить правую команду chkconfig
, или вам нужно отредактировать rc.local
для запуска вашего скрипта. Но самое простое: просто поместите английский текст в файл INSTALL, чтобы люди могли это сделать. В конце концов, когда кто-то решает сделать DEB для Ubuntu или RPM для Redhat или что-то еще, они подойдут для своего дистрибутива и либо отправят вам патч, либо сохранят его отдельно.
Так в чем ваш вопрос? – wRAR
[This post] (http://nedbatchelder.com/blog/201001/running_code_at_python_startup.html) может удовлетворить ваши потребности. – Octipi
@WinRAR Я просто добавил, что, по-моему, может быть актуальным вопросом. Надеемся, что редактирование будет одобрено. – xxmbabanexx