我已经没有了cron.hourly。它是chmod + x'd,它运行正常。我的问题是它无法将Python模块识别为可导入。
我有〜/ Foo / src,其中包含我变成可执行文件(main)的原始Python代码,以及我试图导入的另一个模块(foobar)。我有一个 init .py,那里是空的,应该让任何一个模块都可以导入。实际上,使用
运行我的脚本python src/main.py
一切正常,我没有得到这个错误。运行时
run-parts -v /etc/cron.hourly/main
我收到如下错误:
ImportError: No module named foobar
run-parts: /etc/cron.hourly//main exited with return code 1
我导入foobar的方式是
os.chdir("/home/ubuntu/Foo/src/")
import foobar
同样,这在从Python运行时有效,但在运行可执行文件时却无效。为什么会这样,我可以改变什么以避免这种情况?
答案 0 :(得分:0)
import sys
sys.path.append("/home/ubuntu/Foo/src")
import foobar
来自doc:
sys.path中
指定模块搜索路径的字符串列表。 从环境变量PYTHONPATH初始化,再加上一个 与安装相关的默认值。
在程序启动时初始化,此列表的第一项, path [0],是包含用于的脚本的目录 调用Python解释器。如果脚本目录不是 可用的(例如,如果以交互方式调用解释器,或者如果是 脚本是从标准输入读取的),path [0]是空字符串, 它指示Python首先搜索当前目录中的模块。 请注意,脚本目录在条目之前插入 由于PYTHONPATH而被插入。
程序可以自行修改此列表。