Предположим, что я написал скрипт, который делает morning.py
простым оператором печатиВключите питон скрипт в функцию
# morning.py
print 'Good morning'
Несколько часов спустя я понял, что я должен использовать этот сценарий в другом сценарии с именем evening.py
. Я знаю два варианта. Во-первых, чтобы вызвать morning.py
как подпроцесс
# evening.py
import subprocess
import shlex
process = subprocess.Popen(shlex.split('python morning.py'))
process.communicate()
Это путь я изначально выбрал. Проблема в том, что я хочу упаковать свою программу (morning
+ evening
) в один исполняемый файл. И, на мой взгляд, из exe-файла такой звонок просто не сработает.
Другой вариант - включить модуль morning
в функцию. Например, как этот
# morning.py
def morning_func():
print 'Good morning'
Тогда я могу просто вызвать эту функцию из модуля evening
# evening
import morning
morning.morning_func()
Здесь проблема в том, что в отличие от morning
мой фактический первоначальный сценарий вполне выдвинутым и неаккуратно. Нет единственной функции, которую я могу выполнить для имитации потока сценариев. Обертка всего скрипта в функции просто не кажется правильным.
Каковы возможные решения?
Там абсолютно * не * хорошо причина запуска сценария Python из другого через Popen. Почему вы не можете просто импортировать его как есть? –
Рефакторинг 'Утром', так что он имеет основную функцию. –
@ DanielRoseman Предположим, что в 'вечернем скрипте я добавил строку' import morning'. Как мне получить приветствие «Доброе утро» из «вечера»? –