Во время работы моего кода («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: имя 'созданный_код' не определено