SyntaxError:文件modules / commands.pyc中的非ASCII字符'\ xd1'

时间:2013-07-19 22:55:47

标签: python encoding character-encoding

我有一个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文件,问题会暂时消失,但下次会再次出现。

1 个答案:

答案 0 :(得分:2)

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

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

解决方案是使用来自同一find_module() - 模块的load_module()imp。换到它们后,它开始完美运作。

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