在运行我的代码(“ Test_Use_Generated_Code.py”)时,我确实使用intermeaditae函数(“ write_gen_code.py”)在单独的python文件(“ gen_code.py”)中即时生成了一个新的python函数。我想在仍处于相同运行状态下使用。 我的问题是看不到生成的代码。 我的猜测是,由于解释器在运行开始时看不到代码(因为尚未创建),因此也看不到新生成的代码。
我正在使用Python 3.7和Pycharm(64位)。 您能帮我解决这个问题吗(如果可能!)?
我尝试了其他操作,例如Import_reload(module),但仍然无法使用生成的代码。
import time, sys, os
from PyQt5.QtWidgets import QApplication, QWidget
from write_gen_code import write_gen_code
from gen_code import *
class test_code():
def __init__(self):
Code_FileName = str("gen_code.py")
open (Code_FileName, "w").close ()
write_gen_code ("gen_code.py")
#Expect some code here to load newly generated code
MyObject = getattr (created_code, "Dummy_function") (self)
exit()
if __name__ == "__main__":
app = QApplication (sys.argv)
uiMain = test_code()
sys.exit (app.exec_ ())
import sys
from PyQt5.QtWidgets import QApplication, QWidget
class write_gen_code():
def __init__(self, filename):
with open (str (filename), "w") as file:
content ="# ' Code : -*- coding:utf-8 -*-"
content = content + "\nimport sys"
content = content + "\n\nclass created_code():"
content = content + "\n\tdef Dummy_function(self):"
content = content + "\n\t\tprint(\"hey hey\")"
content = content + "\n\t\tpass\n"
file.write (content)
file.close ()
if __name__ == "__main__":
app = QApplication (sys.argv)
uiMain = write_gen_code("gen_code.py")
sys.exit (app.exec_ ())
import sys
class created_code():
def Dummy_function(self):
print("hey hey")
pass
我确实希望: 嘿嘿
但是到目前为止,我得到了: init 中的文件“ C:/Test_Use_Generated_Code.py”,第11行 MyObject = getattr(created_code,“ Dummy_function”)(个体) NameError:名称“ created_code”未定义