私はおそらく同じシステムを2台持っています。どちらのシステムでも同じソフトウェアを実行しますが、どちらか一方では正しく機能しません。imp.load_sourceが間違ったモジュールをロードします
私はユーザー提供の.py
ファイルで機能を実行しようとしています。私は、エラーを再現し、次の基本的なコードにこれを削減しました:
import imp
with open("test_scripts/load_offsets.py") as fp:
module = imp.load_source("load_offsets", "test_scripts", fp)
dir(module)
、出力は正しいです:予想通り
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'os', 'test_load_offsets']
私は、test_load_offsets
と呼ばれる一つの機能を参照してください。第二のシステム上で
、私は次のような出力が得られます。私は今、別の関数を参照してください
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'test_reset_position']
注:test_reset_position
。ただし、両方のシステムでは、ファイルtest_scripts/load_offsets.py
は同じです!さらに重要なことに、このファイルには機能がありません。test_reset_position
しかし、test_reset_position
という別のファイルには、test_scripts/reset_position.py
の機能があります。さらに、コードサンプルを実行したディレクトリには、test_scriptsc
というファイルがあります(これは両方のシステムで同じです)。それはバイトコードだと思うが、私が問題を見るシステム上では、ファイルの一部を認識できる。test_scripts/test_reset_position.py
。 test_scriptsc
を削除すると、別のファイルをロードしてから問題が再開するまで、正常に機能します。
私の結論は、問題のシステムでは、ファイルtest_scriptsc
が正しく更新されないということです。しかし、私は理由を理解していないし、問題が2つのシステムのうちの1つにしかない理由も理解できません。 2つのシステムの間で唯一の違いは、Ubuntu Linux 16.04.1で問題のあるシステムでPython Python 2.7.12を実行しているのに対し、問題のないシステムではPython 2.7.11+をUbuntu 16.04で実行していることです。
ここで何が起こっているのか誰かが助けてくれますか?何を探したらいいのかわかりません...
2つのシステムで 'module .__ file__'の値を見れば、どうなるでしょうか? – BrenBarn
システム 'module .__ file__'は' test_scriptsc'です。 – Ludo