2013-02-22 5 views
-2

фонСоздать сценарий питона, который работает при запуске

Мне нужно создать сценарий питона, который работает при запуске. Проблема в том, что этот скрипт должен быть независимым от платформы, потому что он будет использоваться в разных операционных системах. Он должен быть автоматическим, потому что он будет запускаться пользователем, и поэтому я не буду устанавливать планировщики задач на каждой отдельной машине.

Вопросы

  1. Как узнать, какая ОС компьютер работает на в Python?
  2. Как сделать скрипт запуска при запуске (Linux, Mac OSX, Windows)
+4

Так в чем ваш вопрос? – wRAR

+0

[This post] (http://nedbatchelder.com/blog/201001/running_code_at_python_startup.html) может удовлетворить ваши потребности. – Octipi

+0

@WinRAR Я просто добавил, что, по-моему, может быть актуальным вопросом. Надеемся, что редактирование будет одобрено. – xxmbabanexx

ответ

4

Вопрос 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 или что-то еще, они подойдут для своего дистрибутива и либо отправят вам патч, либо сохранят его отдельно.

+1

Хорошо, так что это будет не так просто, как я думал, но, по крайней мере, я знаю, в каком направлении смотреть. спасибо – taylor

Смежные вопросы