модуль загрузки python получает ошибку после установки - PullRequest
0 голосов
/ 17 сентября 2018

Почему сценарий не может найти новый модуль после использования системной команды для установки пакета, когда сценарий в состоянии выполнения :

как выглядит структура каталога:

mymoduledir  
|- target_module_dir  
|- main.py

main.py код, подобный следующему:

if __name__ == "__main__":

try:
    import target_module
    print("module already exist")
    # to-do something

except ImportError:
    print("has not target_module, start install")
    os.system("cd target-module-dir && python setup.py install")
    print("install finished")

    import target_module
    # to-do something

Я обнаружил, что: если в среде python нет целевого модуля, мой скрипт автоматически установит его успешно, но я получил ошибку импорта,отображение журнала:

не имеет target_module, начать установку
выполняется установка .....
ЗаконченоОбработка зависимостей для target_module
установка завершена
Traceback (последний вызов был последним):
Файл ". \ main.py",строка 237, в
import target_module ImportError: Нет модуля с именем target_module_name

Это означает, что целевой модуль был успешно установлен, ноЯ встретил importerror, когда хочу импортировать его. Чтобы подтвердить свой вывод, я открываю оболочку python и пытаюсь импортировать целевой модуль, он работает.Когда я повторно запускаю этот скрипт, выводится журнал:

модуль уже существует

Это означает, что этот скрипт успешно импортирует целевой модуль

То, что я думаю: скрипт проверит среду Python перед запуском, если я хочу импортировать новый модуль в рабочем состоянии скрипта, мне нужно сообщить скрипту, что среда обновлена.

Я попробовал: Я искал много связанных проблем, но у меня нет эффективного решения.For some reason, I must use python2.6 to complete my function. И я пытаюсь использовать функцию перезагрузки, как это, но она не может работать.
Что я должен сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 18 сентября 2018

Использование pip install будет работать хорошо, Мое решение:

import pip

if __name__ == "__main__":

try:
    import target_module
    print("module already exist")
    # to-do something

except ImportError:
    print("has not target_module, start install")
    pip.main(['install', './target_module_dir/'])
    print("install finished")
    import target_module
    # to-do something
...