【发布时间】:2013-07-19 22:55:46
【问题描述】:
我有一个 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 文件,问题会暂时消失,但下次会出现。
【问题讨论】:
-
help(imp) 说“未记录的函数已过时”,
load_source未记录。有什么理由不使用记录在案的load_module函数吗?根据错误,load_source似乎正在加载已编译的 (.pyc) 文件,就好像它是源代码一样,但由于它没有记录在案,这只是一个猜测。 -
对我来说工作得很好!可能会尝试删除
[working dir/]modules/__pycache__ -
@torek 我使用它的唯一原因是它是我第一个在 google 中找到一个很好的例子。我可能会研究 load_module
-
@rnbcoder 我找不到这样的文件/目录
-
相关,提到了 load_source 的弃用:stackoverflow.com/questions/10533679/…
标签: python encoding character-encoding