4

我有一个 python 文件,[working dir/]modules/commands.py其中仅包含以下内容:

def getId():
    return "commands"

然后我有另一个文件,[working dir/]main.py它使用以下内容:

fpath = "modules/commands.py"
mname = "commands"
imp.load_source(mname, fpath)

添加getId()到后commands.py,尝试运行时开始出现以下错误main.py

SyntaxError: Non-ASCII character '\xd1' in file modules/commands.pyc on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

该错误抱怨非 ascii 字符,但文件中应该没有。是什么导致了错误?

编辑:如果我删除 .pyc 文件,问题会暂时消失,但下次会再次出现。

4

1 回答 1

3

(由于似乎没有人想要代表,我会自己写一个答案)

load_source()-module 中的方法imp已被标记为过时,甚至从 python 3.X 的文档中完全删除。

解决方案是使用find_module()load_module()来自同一个imp模块。换成他们之后,它开始完美地工作。

过时的函数在这种行为中似乎有些错误(至少在 Centos 6 上的 python 2.6.6 中)

于 2013-07-21T14:23:10.487 回答