2

我的 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 运行时有效,但在运行我的可执行文件时无效。为什么会这样,我可以改变什么来避免这种情况?

4

1 回答 1

0
import sys
sys.path.append("/home/ubuntu/Foo/src")

import foobar

从文档:

系统路径

指定模块搜索路径的字符串列表。从环境变量 PYTHONPATH 初始化,加上依赖于安装的默认值。

在程序启动时初始化时,此列表的第一项 path[0] 是包含用于调用 Python 解释器的脚本的目录。如果脚本目录不可用(例如,如果交互调用解释器或从标准输入读取脚本),path[0] 是空字符串,它指示 Python 首先搜索当前目录中的模块。请注意,脚本目录是在 PYTHONPATH 插入的条目之前插入的。

程序可以出于自己的目的自由修改此列表。

于 2013-03-06T23:14:25.303 回答