#python
#python
Вопрос:
Мне нужно импортировать и запустить скрипт из строки (пути), которая находится в другой папке. Ввод должен быть полностью динамическим. Приведенный ниже код работает, когда файл находится в той же папке, но, похоже, я не могу заставить его работать, когда файл находится в другом месте.
main.py
path = 'binTestScript'
module = __import__(path)
my_class = getattr(module, '__main__')
instance = my_class(3,16)
print(instance)
TestScript.py
def __main__(a,b):
return(a*b)
Получить ошибку:
Ошибка импорта: нет модуля с именем ‘bin \ TestScript’
в ОС Windows
Комментарии:
1. Итак, в чем именно проблема? Вы получаете сообщение об ошибке?
2. Какую ОС вы используете?
3. Получаем ошибку: ImportError: нет модуля с именем ‘bin \ TestScript’
4.
binTestScript
не является именем модуля . Правильное имя будет примерно такимbin.TestScript
. Имена модулей != пути к файлам.5. На что похож ввод? Не могли бы вы привести пример этого ввода?
Ответ №1:
Вам нужно отделить каталог от имени модуля и добавить его в путь поиска модуля. Например:
import os.path
import sys
path = 'bin\TestScript'
mdir = os.path.dirname(path)
modname = os.path.basename(path)
sys.path.append(mdir)
module = __import__(modname)
my_class = getattr(module, '__main__')
instance = my_class(3,16)
print(instance)
Альтернативой является превращение каталога «bin» в пакет.