ここでは、reload()関数を使ってPythonモジュールをリロードするコードを示します。私はいくつか(すべてではありません:) :) stackoverflowの他の質問と回答を見ているが、私はまだos.remove( 'm.pyc')を行う必要がある私のコードを取得する。誰かが私にそれを説明したり、削除せずに以下の作業をするためにコードを変更する必要があるかどうかを私に見せてもらえますか?ほぼ同時に作成されることから、両方のファイルを防ぐためにtime.sleep(1)
であなたの削除ステートメントを置き換えることによりもう1つのPythonモジュールのリロードに関する質問
import os
open('m.py','wt').write(r'def f(str): print "Sooo Original : %s"%(str)')
import m
m.f('Original')
os.remove('m.pyc')
open('m.py','wt').write(r'def f(str): print "Not so original : %s"%(str)')
m = reload(m)
m.f('Copy')
はい私がそれをインポートするように要求しているときに、なぜpythonが実際にモジュールを再度インポートしないのか、それは私には奇妙です。 –
pycはリロード機構に接続されていないキャッシュ機構です。 Pythonがキャッシュを再構築する必要性を検出しなければ、importとreloadは同じ古いpycを使用するのが普通だと思われます。必要なのはpycキャッシュを無効にする方法です(これはpycファイルを削除するときに行います)。 – JMD
私が知る限り、それはタイムスタンプになるので、ファイルを待ったり削除したりするのではなく、m.pycのタイムスタンプを(過去の日付に)変更するのが別の方法です。 –