尝试在Python中使用即时生成的代码的问题

时间:2019-05-19 11:46:06

标签: python import pycharm reload

在运行我的代码(“ 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”未定义

0 个答案:

没有答案