#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 добрался туда в конце концов, но это полезный скрипт для будущих проблем с окружающей средой!