Точки входа и подприложения Python setuptools как дочерние процессы

Я работаю над Windows и разрабатываю приложение, которое будет распространяться среди конечных пользователей.

У меня есть один дистрибутив setupttools, который содержит множество пакетов Python. Этот дистрибутив объявляет некоторые точки входа console_scripts, которые указывают на различные функции в моем коде.

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

Вместо этого я хотел бы использовать сгенерированный исполняемый файл-заглушку точки входа setuptools в качестве запускаемого подпроцесса.

Я могу получить точку входа в свое подприложение с помощью чего-то вроде:

import pkg_resources
updatefunc = pkg_resources.load_entry_point('iti_reporter', 'console_scripts', 'my_update_ui')

который дает мне функцию Python для этого. Есть ли способ перейти от этой функции к сгенерированной оболочке сценария setuptools, которая находится в моем venv?

Спасибо за помощь.


person EB.    schedule 08.08.2013    source источник


Ответы (1)


Выяснил это, просто сделав то, что в любом случае сделал бы скрипт:

def _get_entry_script(dist, entrytype, entryname):
    import pkg_resources
    mainfunc = pkg_resources.load_entry_point(dist, entrytype, entryname)
    entry_load_script = """import sys; from pkg_resources import load_entry_point;
    sys.exit(
        load_entry_point('%s', '%s', '%s')()
    )"""
    script = entry_load_script%(dist, entrytype, entryname)
    script = ''.join(x.strip() for x in script.split('\n') if x.strip())
    return script

def _get_updater_script_arg_dev():
    return _get_entry_script('mydist', 'console_scripts', 'mypkg_update_ui')

def launch_updater():
    cmd = (os.path.abspath(sys.executable), '-c', _get_updater_script_arg_dev(), '--arg1', '--arg2')
    return subprocess.Popen(cmd)
person EB.    schedule 08.08.2013