我有一个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文件,问题会暂时消失,但下次会再次出现。
答案 0 :(得分:2)
(因为似乎没有人想要代表,我会自己写一个答案)
来自load_source()
- 模块的方法imp
已被标记为过时,甚至已完全从python 3.X的文档中删除。
解决方案是使用来自同一find_module()
- 模块的load_module()
和imp
。换到它们后,它开始完美运作。
过时的函数在这种行为中似乎有些错误(至少在Centos 6上的python 2.6.6中)