сценарий оболочки не изменит каталог и не выполнит сценарий python - PullRequest
0 голосов
/ 03 марта 2020

Итак, у меня есть файл с успехом. sh

 python3 /home/ubuntu/foo.py

, и это выполняется в Cron с:

* * * * * /home/ubuntu/success.sh >> /tmp/cron_output

, где foo.py просто

 print("DSVSDVDSVSDFDS")

однако, как только я попытаюсь запустить то, что я на самом деле хочу запустить и изменить успех. sh на следующее:

   cd "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/" && python3 "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/ebay-price-arbitrage-bot.py"

В файл не записывается вывод ...

Мне интересно, действительно ли он работает или нет. Почему ничего не выводится ?? успех. sh работает нормально как автономный ...

РЕДАКТИРОВАТЬ:

Я изменил свой crontab на следующее:

  * * * * * /home/ubuntu/success.sh > /tmp/cron_output 2>&1

Таким образом, он выводит ошибки , Теперь это показывает, что модуль не найден в моем скрипте py.

    Traceback (most recent call last):
    File "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/ebay-price-    arbitrage-bot.py", line 23, in <module>
    from paypal import PayPalInterface
    ModuleNotFoundError: No module named 'paypal'

но он отлично работает как самостоятельный, поэтому я не знаю, что происходит.

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Python ищет модули в текущем каталоге и в стандартном пути модуля. Когда вы запускаете из cron, процесс не находится в вашем домашнем каталоге, поэтому необходимо добавить путь. В файле python сделайте:

import sys
sys.path.insert(0, "/path/to/your/paypal/module")
0 голосов
/ 03 марта 2020

Поскольку вы упоминаете полный путь к файлу python, вам не нужно указывать путь к этому пути.

Кроме того, вы можете проверить, является ли путь правильным? Потому что оператор && работает так, что команда python3 выполняется только в случае успеха команды cd. Таким образом, если путь был неверным, компакт-диск потерпел бы неудачу и python3 никогда не выполнялся.

Кроме того, вы можете использовать ';' вместо '&&', который гарантирует выполнение python3 независимо от результата команды 'cd'.

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