我已经阅读了多篇文章和许多文章,详细说明了 cron 作业中的 scipts 需要保留在脚本本身内部运行所需的环境变量,因为在 cron 中打开了 shell。我的情况是独一无二的,因为我的路径变量都是按照讨论的那样设置的,这反过来又会使用 subprocess.call ()成功调用 pysaunter python egg ,但它似乎从那里崩溃了。这会导致整个过程中断一个 cron 作业。
为清楚起见,以下是我参考的步骤:
1) cronjob calls run_test.py -n foo
2) run_test.py sets the environment variables correctly
(cur_shell_path=sys.path (converted to proper path string, not shown here)
my_env= os.environ.copy()
my_env["PATH"] = my_env["PATH"] + cur_shell_path)
3) run_test.py calls subprocess.call("pysaunter -m foo -v", env=my_env, shell=True)
步骤 3 的输出显示它正在找到 egg 并成功开始从 pysaunter 加载必要的模块,但是在尝试查找用于修改 pysaunter 的目录时它会中断。错误显示:
ImportError: no module named helpers
我曾多次尝试将此路径添加到环境中,但似乎从未找到包含 helpers.py 的目录。pysaunter -m foo -v
当从交互式 shell 调用时,该命令正常工作。
我在 pysaunter 上找不到太多帮助,所以我认为这里不需要过多的 pysaunter 细节。但是,如果您对 pysaunter 有更多了解,请告诉我您是否需要更多信息。我不确定要分享什么。
我还阅读了许多帖子,讨论了通过编辑 .profile/.bash_profile 来更改 shell 的默认行为的能力。我试图找到一个可以让我的路径变量全局可访问的地方,但我找不到任何东西。我不确定这是如何完成的,它可能会解决我的问题,所以如果您对此有所了解,请告诉我。
最后一点,这是在 Mac 10.7.5 上运行的。