我在 Linux 机器上使用 Python 3,在同一主机上使用经典 rpyc。在当前目录中拥有简单的 python 文件 tst.py,其中包含两行:
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”文件,只留下一行:
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”文件的名称并使用新名称再次重复相同的过程,那么结果将是正确的。同样,这指向缓存但不在当前目录中。