У меня ниже несколько модулей A.py и B.py, C .py et c. Мы вызываем метод run_app модуля B, C из A:
Файл A.py выглядит следующим образом. Мы передаем appName в качестве аргумента командной строки A:
import B
Import sys
from pyspark.conf import SparkConf
appName = sys.argv[1].upper()
def main(appName)
print("Starting"+appName+" processing for ")
**appName.run_app**
if __name__ == '__main__':
print("Executing Main "+appName)
main(appName)
Файл B.Py выглядит следующим образом:
import A.py
from pyspark.sql.functions import *
def run_app:
-----some code-----
-----code-------
Теперь на основе переданного appName Для модуля A.py
в качестве аргумента командной строки нам нужно вызвать B.run_app
или c.appName
.
Но при использовании оператора appName.run_app выдает ошибку
AttributeError: 'str' object has no attribute 'run_app'
Как мы можем преобразовать строковую переменную appName в тип имени модуля и вызвать модуль динамически (B.run_app или C .run_app) et c .....