4

[working dir/]modules/commands.py次のみを含むpython ファイルがあります。

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

(誰も担当者を欲しがっていないようだったので、私は自分で答えを書きます)

-moduleのメソッドload_source()imp廃止され、python 3.X のドキュメントから完全に削除されました。

解決策は、代わりに同じ-moduleからfind_module()andを使用することでした。それらに変更した後、問題なく動作するようになりました。load_module()imp

廃止された関数は、その動作で多少バグがあるようです (少なくとも、Centos 6 の python 2.6.6 では)。

于 2013-07-21T14:23:10.487 に答える