Проблема с попыткой использовать некоторый код, сгенерированный на лету, с Python - PullRequest
0 голосов
/ 19 мая 2019

Во время работы моего кода («Test_Use_Generated_Code.py») я генерирую на лету новую функцию python в отдельном файле python («gen_code.py»), используя функцию intermeaditae («write_gen_code.py»), которая Я хочу использовать, находясь в том же беге. Моя проблема в том, что сгенерированный код не виден. Я предполагаю, что интерпретатор не видел код в начале выполнения (потому что еще не создан) и поэтому не видит новый сгенерированный код.

Я использую Python 3.7 и Pycharm (64 бита). Можете ли вы помочь мне решить эту проблему (если возможно!)?

Я пробовал разные вещи, такие как Import_reload (модуль), но я все еще не могу использовать сгенерированный код.

Функция происхождения:

   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

Я ожидаю: эй, эй

но пока я получаю: Файл "C: /Test_Use_Generated_Code.py", строка 11, в init MyObject = getattr (созданный_код, «фиктивная_функция») (самостоятельно) NameError: имя 'созданный_код' не определено

...