Python2.7运行时代码更改

2024-10-02 14:15:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的硕士论文中,我试图利用Python作为脚本语言的特性来允许源代码的运行时更改。源代码本身使用一个特殊的用户界面进行建模,并在save时生成。启动时,生成的代码被发送到引擎并导入。在源代码更改之前,此过程可以正常工作,而不必在两次运行之间重新启动引擎(但不能选择重新启动)。你知道吗

问题是,即使文件已更改,引擎仍保留对旧源代码的引用。你知道吗

我花了相当长的时间寻找解决方案,发现reload()是一个选项(ref)。不幸的是,由于某些原因,这不起作用。以下是相关部分的当前版本(每次收到源代码更改时执行):

package = __import__("tmp", fromlist=["tmp"])
reload(package) # this seems to have no effect
clsmembers = inspect.getmembers(package, lambda member: inspect.isclass(member) and member.__module__ == package.__name__)
beclass = clsmembers[0][1]
be = beclass()

我正在使用Python2.7(我必须这样做,我知道以后的Python版本对这个特性提供了更好的支持)。它不必是reload(),我只需要任何方法来重新导入代码更改。你知道吗

感谢您的帮助!:)


Tags: 代码引擎版本利用package源代码特性脚本语言
1条回答
网友
1楼 · 发布于 2024-10-02 14:15:58

我终于自己解决了这个问题。虽然我已经读过好几遍了,不可能删除导入的模块,但是下面的解决方案似乎非常简单,而且很明显。你知道吗

执行代码后,我使用以下方法删除导入引用:

del(sys.modules["tmp"])

这样可以确保下次执行时有一个干净的重置,并且可以像第一次那样导入源代码文件。你知道吗

相关问题 更多 >

    热门问题