【问题标题】:Run a python package using shell script使用 shell 脚本运行 python 包
【发布时间】:2022-01-06 09:46:45
【问题描述】:

我已经安装了一个 python 3 播客下载工具,它使用以下命令在命令行上运行良好:

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

现在我想使用 cron 从 shell 脚本运行它。当我将其放入 shell 脚本并使其可执行如下:

#!/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 用户专门调用 shell 脚本。我不知道为什么,但它确实有效....有一天我会理解 UNIX!

即:

sudo -u openhabian .\podcasts.sh

【问题讨论】:

  • podcastdownloader 安装在哪里?当没有指定脚本时,Python 路径隐式包含当前工作目录。
  • /home/openhabian/.local/lib/python3.7/site-packages/podcastdownloader @chepner
  • python3 在每种情况下指的是相同的安装吗?
  • @chepner 我不知道如何检查 - 错误指向 usr/bin/python3 似乎很奇怪,看起来我安装了几个 python....
  • 这是 100% 正常的。对于openhabian 以外的任何用户,/home/openhabian/.local/bin 如何位于路径中?

标签: python bash raspbian


【解决方案1】:

我猜想你的命令行和脚本中的环境在某种程度上是不同的。我将从比较两者的环境变量开始:

$ env|sort>command_line.env&&echo '#!/bin/bash
env|sort>in_bash_script.env'>a_script.sh&&chmod +x a_script.sh&&./a_script.sh&&diff -w command_line.env in_bash_script.env

【讨论】:

  • 感谢@aqn 最后到达那里,但这是一个对未来环境问题有用的脚本!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
  • 2017-07-25
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
相关资源
最近更新 更多