Запустите пакет python с помощью сценария оболочки

#python #bash #raspbian

Вопрос:

Я установил средство загрузки подкастов python 3, которое отлично работает в командной строке, используя следующую команду:

 python3 -m podcastdownloader "Global News Podcast" -f 'https://podcasts.files.bbci.co.uk/p02nq0gn.rss' -l 1  

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

 #!/bin/bash python3 -m podcastdownloader "Global News Podcast" -f https://podcasts.files.usrbbci.co.uk/p02nq0gn.rss' -l 1  

Когда я бегу, я получаю

 /usr/bin/python3: No module named podcastdownloader  

Это местоположение пакета

 /home/openhabian/.local/lib/python3.7/site-packages/podcastdownloader   

Если я побегу python3 -m site

 sys.path = [  '/home/openhabian/media/podcasts',  '/usr/lib/python37.zip',  '/usr/lib/python3.7',  '/usr/lib/python3.7/lib-dynload',  '/home/openhabian/.local/lib/python3.7/site-packages',  '/usr/local/lib/python3.7/dist-packages',  '/usr/lib/python3/dist-packages', ] USER_BASE: '/home/openhabian/.local' (exists) USER_SITE: '/home/openhabian/.local/lib/python3.7/site-packages' (exists) ENABLE_USER_SITE: True  

Есть идеи, что я делаю не так?

Спасибо!

Хорошо, я понял это — мне нужно специально вызвать сценарий оболочки, используя пользователя openhab. Я не знаю почему, но это работает….однажды я пойму UNIX!

т.е.:

 sudo -u openhabian .podcasts.sh  

Комментарии:

1. Где podcastdownloader установлен? Путь Python неявно включает текущий рабочий каталог, если сценарий не указан.

2. /главная страница/openhabian/.local/lib/python3.7/пакеты сайтов/загрузчик подкастов @chepner

3. Имеется python3 ли в виду одна и та же установка в каждом конкретном случае?

4. @chepner Я не знаю, как проверить — кажется странным, что ошибка указывает на usr/bin/python3, похоже, у меня несколько установок python….

5. Это на 100% нормально. Как бы /home/openhabian/.local/bin это было на ПУТИ для любого пользователя, кроме openhabian ?

Ответ №1:

Я бы предположил, что каким-то образом среда в вашей командной строке отличается от среды в сценарии. Я бы начал с сравнения переменных среды из обоих:

 $ env|sortgt;command_line.envamp;amp;echo '#!/bin/bash env|sortgt;in_bash_script.env'gt;a_script.shamp;amp;chmod  x a_script.shamp;amp;./a_script.shamp;amp;diff -w command_line.env in_bash_script.env  

Комментарии:

1. спасибо @aqn добрался туда в конце концов, но это полезный скрипт для будущих проблем с окружающей средой!