Я пытаюсь создать конвейер для хранения процедуры в облаке (редактор блоков веб-сайта MAGE.AI), потому что сервер мы используем на моем рабочем месте, устарело, и мне нужно было использовать определенные библиотеки. Поток следующий:
- @data_loader load_config (загружает информацию в формате JSON некоторых маршрутов).
< /li>
@custom - @transform
@data_exporter
def execute(*args, **kwargs):
# Rutas:
config_data = load_config()
if not config_data:
return "Error: Config data is missing or invalid"
# Obtención de variables (API call):
custom_args = kwargs.get('custom_arguments', {})
urls = custom_args.get('urls', [])
imgs = custom_args.get('imgs', [])
uppertext = custom_args.get('uppertext', '')
idioma = custom_args.get('idioma', '')
# Ejecución:
actualizador = actualizarMarketingGlobal(urls, imgs, uppertext, idioma, config_data)
actualizador.mod_all()
Сведения об ошибке:
Кажется, все работает нормально, когда я вызываю его из Postman. Что вызывает у меня ошибку, так это ссылка на load_config(), в результате чего config_data не определена.
File "/usr/local/lib/python3.10/site-packages/mage_ai/data_preparation/models/block/__init__.py", line 2169, in execute_block_function
output = block_function_updated(*input_vars, **global_vars)
File "", line 17, in execute
NameError: name 'config_data' is not defined
- Когда я тестирую функцию load_config, она отлично возвращает переменные, поэтому проблема заключается в ссылке на функцию.
- Я пытался получить его напрямую из иерархии с помощью *args, но он сказал, что не определено. Кроме того, я хотел получить больше контроля над ней, вызвав эту функцию самостоятельно.
- data_loaders > load_config.py > def load_config()
- custom > actizarmarketingglobal.py > def Execute()
Итак, для каждого вызова ссылки я получаю другая ошибка.
1 – нет модуля. по имени...:
from load_config import load_config
Ошибка:
2037 if custom_code is not None and custom_code.strip():
2038 if BlockType.CHART != self.type:
-> 2039 exec(custom_code, results)
2040 elif self.content is not None:
2041 exec(self.content, results)
File :8
ModuleNotFoundError: No module named 'load_config'
2 — «имя» не в глобальных переменных...?
from .load_config import load_config
Ошибка:
2037 if custom_code is not None and custom_code.strip():
2038 if BlockType.CHART != self.type:
-> 2039 exec(custom_code, results)
2040 elif self.content is not None:
2041 exec(self.content, results)
File :8
KeyError: "'__name__' not in globals"
Когда я спросил Chatgpt, мне сказали:
Если вы считаете, что проблема конкретно в __name__ , одним из обходных путей является установка __name__ вручную в пользовательском блоке. Например, вы можете добавить это в начало кода вашего пользовательского блока:
if '__name__' not in globals():
globals()['__name__'] = '__main__'
3 — Опять ошибка импорта
Однако, если я это сделаю, я получу:
tion_previous, **kwargs)
2037 if custom_code is not None and custom_code.strip():
2038 if BlockType.CHART != self.type:
-> 2039 exec(custom_code, results)
2040 elif self.content is not None:
2041 exec(self.content, results)
File :10
ImportError: attempted relative import with no known parent package
Подробнее здесь: https://stackoverflow.com/questions/792 ... ai-website