2015-02-16 5 views
0

Мой скрипт Python отлично работает в терминале, но когда я пытаюсь настроить его на запуск один раз в день в определенное время с помощью запуска (с помощью программного обеспечения под названием Lingon), я просто не может заставить его работать. Из всего, что я прочитал, лучше вызвать скрипт Python из сценария оболочки (я нахожусь в Macbook, запустив Yosemite). Итак, это то, что я пытаюсь сделать. Ошибки, которые я получаю, когда должен запускаться сценарий, следующие:скрипт работает отлично, но не с launchd

Переменная окружения TERM не установлена.

окр: python3: Нет такого файла или каталога

На данный момент, я уверен, что это проблема окружающей среды, но независимо от того, что я стараюсь, я просто не могу заставить его работать. Кстати, я могу получить скрипт для запуска по расписанию так:

#!/bin/bash 
echo "hello world." 

Проблема возникает, когда я пытаюсь запустить это:

#!/bin/bash 
/Users/jeff/Documents/scripts/my_script.py 

Кроме того, даже если я был работая с компьютерами в течение долгого времени, я по-прежнему довольно неосведомлен о многих вещах, поэтому, пожалуйста, скажите мне, как исправить это, как будто я новичок.

ответ

0

I» я попробовал все, что было упомянуто, особую благодарность Падреаку, но ничего не работает. Это странно, потому что сценарий отлично работает при запуске с терминала, но при запуске с запуска запускается ошибка. Я смог избавиться от ошибок при запуске с launchd, но тогда сценарий не запускался с терминала. Очень странно. Но вот как я получил его для запуска как в терминале, так и по расписанию с launchd. Во-первых, я изменил притон линию от этого:

#!/usr/bin/env python3 

к этому:

#!/usr/bin/env /Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 

Затем я должен был указать в остальной части сценария полный путь к файлам, например, с:

log = open('log_directory/my_log.log', 'a') 

к этому:

log = open('/Users/jeff/documents/my_script_documents/python/development/log_directory/my_log.log', 'a') 

В любом случае, все это работает сейчас, но я считаю, что проблема, с которой я столкнулась, может иметь какое-то отношение к обновлению моего Mac до ОС Yosemite. Есть некоторые упоминания о возможной ошибке в Yosemite относительно launchd/launchd.conf/launchctl. Ну, я бы хотел поверить, что это не я в течение последних 4 дней, пытаясь заставить это работать ... но кто знает?

1

На основании статьи here вам нужно создать .plist для чего-то, как запуск программ в следующем:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <!-- The label should be the same as the filename without the extension --> 
    <string>org.yourusername.my_script-test</string> 
    <!-- Specify how to run your program here --> 
    <key>ProgramArguments</key> 
    <array> 
     <string>/usr/local/bin/python3</string> 
     <string>/Users/jeff/Documents/scripts/my_script.py</string> 
    </array> 
    <!-- Run every hour --> 
    <key>StartInterval</key> 
    <integer>3600</integer><!-- seconds --> 
</dict> 
</plist> 

Тогда:

$ launchctl load ~/Library/org.yourusername.my_script-test.plist 
$ launchctl start org.yourusername.my_script-test 

статья здесь охватывает environment variables

+0

Когда я это делаю: python3 /Users/jeff/Documents/scripts/my_script.py Я получаю: /Users/jeff/Documents/scripts/my_script.py: строка 3: python3: команда не найдена –

+0

У меня есть строка shebang : #!/usr/bin/env python3 –

+0

Скрипт отлично работает, если он запускается с терминала. Только проблема заключается в попытке запланировать его запуск с помощью запуска. Вот начало скрипта python: #!/ USR/бен/окр python3 ##### импорт модулей импорт sqlite3 импорт запросов импорт CSV время импорта импорта DateTime импорт pprint –

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