gpt4 book ai didi

Python 2.7 运行时代码更改

转载 作者:行者123 更新时间:2023-12-01 04:56:24 27 4
gpt4 key购买 nike

对于我的硕士论文,我试图利用 Python 作为脚本语言的本质来允许源代码的运行时更改。源代码本身使用特殊的用户界面进行建模并在保存时生成。启动时,生成的代码被发送到引擎并导入。这个过程工作正常,直到源代码发生变化,而无需在两次运行之间重新启动引擎(但重新启动是没有选择的)。

问题在于,即使文件已更改,引擎仍然保留对旧源代码的引用。

我花了相当多的时间寻找解决方案,并发现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()

我正在使用 Python 2.7(我必须这样做,我知道更高版本的 Python 对此功能提供了更好的支持)。它不一定是reload(),我只需要任何方法来重新导入代码更改。

感谢任何帮助! :)

最佳答案

我终于自己解决了这个问题。尽管我已经多次读到不可能删除导入的模块,但以下解决方案似乎非常简单且明显。

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

del(sys.modules["tmp"])

这可以确保我对下一次执行进行干净的重置,并且可以导入源代码文件,就像我第一次这样做一样。

关于Python 2.7 运行时代码更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27248849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com