【发布时间】:2021-03-11 16:37:59
【问题描述】:
涉及的基本思想:
我正在尝试制作一个学生可以编写代码的应用程序 与特定问题相关(比如检查数字是否为偶数) 然后由应用程序检查学生给出的代码 将用户代码给出的输出与正确的输出进行比较 由应用程序中已经存在的正确代码给出。
我正在做的项目的基本版本:
您可以在其中编写 python 脚本(在 tkinter 文本中)的应用程序
盒子)。文本框的内容首先存储在一个test_it.py
文件。该文件然后由
应用。然后调用test_it.py 中的函数
获取代码的输出(由用户)。
问题:
由于我正在“导入” test_it.py 的内容,因此,
在应用程序运行期间,用户可以测试他的脚本
只有一次。原因是python会导入test_it.py
只归档一次。因此,即使将用户的新脚本保存在
test_it.py ,它不会对应用程序可用。
解决办法:
Reloadtest_it.py每次点击测试脚本的按钮时。
实际问题:
虽然当我从脚本运行应用程序时,这可以完美运行, 此方法不适用于文件的已编译/可执行版本(.exe)(这是预期的,因为在编译期间所有导入的模块都将是 也编译过,所以以后修改它们将不起作用)
问题:
我希望我的test_it.py 文件即使在编译应用程序后也能重新加载。
如果您想查看应用程序的工作版本以自行测试。你会发现它here。
【问题讨论】:
-
您可以使用
-Bcommand line flag 启动应用程序以防止创建字节码,如果这就是您所说的“文件的编译版本” -
@MauriceMeyer 通过编译,我的意思是制作一个
.exe。对困惑感到抱歉。我不懂很多术语 -
你用pyinstaller创建.exe?
-
@viilpe 是的。不完全是 pyinstaller,而是 this(在其后端使用 pyinstaller)
标签: python python-3.x module reload