В настоящее время у меня есть код, который проверяет if __name__ == '__main__'
, а затем вызывает некоторую функцию, если это так. В настоящее время я выполняю этот код, создавая еще один подпроцесс python, но импортировать его в качестве модуля является более чистым. Проблема в том, что в этих модулях нет функции main
- это точно то, что выполняется под __name__ == '__main__'
. Единственный вариант, который у меня есть, это установить атрибут __name__
перед выполнением модуля. Каков наилучший способ сделать это?Установите __name__ в '__main__' на модуль перед исполнением
0
A
ответ
0
То, что я в конечном итоге делает это следующим образом:
imp_new_module = type(sys)
new_module = imp_new_module(module_name)
new_module.__dict__['__name__'] = '__main__'
exec(open(scriptname).read(), new_module.__dict__)
Это похоже на то, что делают importlib Внутренности, но делает пропустить некоторые атрибуты.
Смежные вопросы
- 1. PHP-эквивалент Python __name__ == "__main__"?
- 2. многопроцессор python для окон, если __name__ == "__main__"
- 3. нет дополнительных отступов с if __name__ == "__main__":
- 4. if __name__ == "__main__" dosent do anything
- 5. Apache/mod wsgi if __name__ == '__main__' эквивалент
- 6. if __name__ == '__main__' не работает ipython
- 7. Почему это так? если - __name__ == '__main__'
- 8. Powershell equivilent из питона, если __name__ == «__main__»:
- 9. Как импортировать модуль как __main__?
- 10. Что такое clojure-эквивалент идиомы Python «если __name__ == '__main__?»?
- 11. Документирование записи сценария python (__name__ == '__main__') с использованием sphinx
- 12. Лучшее решение, чем если __name__ == '__main__' дважды в скрипте Python
- 13. Python в emacs: __name__ == '__main__', но почему-то не
- 14. Pydev, ярлык для вставки, если __name__ == '__main__' в коде
- 15. Нужно ли явно указывать __name__ == "__main__" перед вызовом getLogger в Python?
- 16. если __name__ == «__main__» состояние с колбы/Elastic Beanstalk
- 17. Путаница с двумя ключевыми словами: __name__ и __main__
- 18. Как создать модуль, как его имя __main__?
- 19. enigma using python-multiprocessing связанный с if __name__ == '__main__'
- 20. Переменные Python не определены после if __name__ == '__main__'
- 21. Является ли (interactive()) R эквивалентным pythonic "if __name__ ==" __main__ ": main()"?
- 22. Python: Импортировать и инициализировать Argparse. Если __name__ == '__main__'?
- 23. Есть ли R-эквивалент pythonic "if __name__ ==" __main__ ": main()"?
- 24. ли общий писать много кода под если __name__ == «__main__»: заявление
- 25. Невозможно указать переменную self, если __name__ == '__main__': block
- 26. Что делать, когда __name__ должен не равен «__main__»
- 27. Изменить javascript перед его исполнением
- 28. Python: определить фактический текущий модуль (не __main__)
- 29. Вызов if __name__ == '__main__': в одном модуле от функции в другом модуле
- 30. python flask не может найти модуль '__main__' в ''
Почему вы добавляете 'if __name__ == '__main __'', когда хотите, чтобы он выполнялся при импорте? – MSeifert
Это не мой код. – xaav
Если вы не можете просто выполнить функцию 'main', я рекомендую * not * импортировать этот файл. Просто продолжайте работать так, как вы его запускали. Среди прочего, что произойдет, если вам нужно дважды запустить код? Вы не можете просто повторно импортировать его. Есть много осложнений с попыткой заставить этот код работать как модуль, если вы не можете изменить код. – user2357112