Linux ボックスで Python 3 を使用し、同じホストに対して従来の rpyc を使用しています。現在のディレクトリに単純な python ファイル tst.py があり、その中に次の 2 行があります。
a = {'a': 0}
b = 3
次に、次のコマンドを実行します。
>>> import rpyc; conn = rpyc.classic.connect('127.0.0.1')
>>> conn.execute('import tst')
>>> conn.eval('dir(tst)')
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__spec__', 'a', 'b']
>>> conn.eval('tst.a, tst.b')
({'a': 0, 'b': 1}, 3)
すべてが期待どおりです。ここで接続を閉じる場合:「conn.close()」、python セッションを閉じ、現在のディレクトリから「pycache」を削除し、「tst.py」ファイルを編集して、1 行だけ残します。
a = {'a': 0, 'b': 2}
新しいセッションで上記の同じコマンドを最初から繰り返します。
……(飛ばして)……
>>> conn.eval('dir(tst)')
'__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__spec__', 'a', 'b']
>>> conn.eval('tst.a, tst.b')
({'a': 0, 'b': 1}, 3)
したがって、驚くべきことに、tst.py ファイルが変更され、ローカルの python キャッシュが削除されても、結果は同じままです。誰かが初心者に、私が間違ったことをしたことと、以前にロードされたコードをきれいにする方法を説明できますか? 「rpyc」には独自のキャッシュがありますか? この「tst.py」ファイルの名前を変更し、新しい名前で同じ手順をもう一度繰り返すと、正しい結果が得られます。繰り返しますが、これはキャッシュを指していますが、現在のディレクトリではありません。