существует ли простой способ обнаружения чего-то вроде GTK, поэтому он применял код только при наличии GTK?
Сначала разбейте ваше приложение на 3 отдельных модуля.
Фактическая работа: foo_core.py
.
Модуль CLI, который импортирует foo_core
. Назовите это foo_cli.py
.
Модуль графического интерфейса, который импортирует foo_core
. Назовите это foo_gui.pyw
.
Модуль foo_cli
выглядит следующим образом.
import foo_core
import optparse
def main():
# parse the command-line options
# the real work is done by foo_core
if __name__ == "__main__":
main()
Модуль foo_gui
может выглядеть следующим образом.
import foo_core
import gtk # or whatever
def main()
# build the GUI
# real work is done by foo_core under control of the GUI
if __name__ == "__main__":
main()
Обычно этого достаточно. Людям можно доверять, чтобы они сами решали, хотят ли они CLI или GUI.
Если вы хотите сбить с толку людей, вы можете написать foo.py
скрипт, который выполняет что-то вроде следующего.
try:
import foo_gui
foo_gui.main()
except ImportError:
import foo_cli
foo_cli.main()