2016-10-04 8 views
0

У меня есть (3.5) проект Setuptools на основе Python с несколькими сценариями как точки входа, похожее на следующее:Вызов точку входа Setuptools из в библиотеке

entry_points={ 
    'console_scripts': [ 
     'main-prog=scripts.prog:main', 
     'prog-viewer=scripts.prog_viewer:main' 
    ]} 

Так что, как предполагается, основной сценарий , запустите как main-prog и вспомогательный скрипт prog-viewer (который делает некоторые вещи Tk).

Проблема заключается в том, что я хочу, чтобы иметь возможность запускать prog-viewer в Popen подпроцесса из main-prog (или скорее формируют мою библиотеку) без необходимости прибегать вручную выяснить пути, а затем адаптировать к различным ОС. Кроме того, что мне делать, когда мой PATH содержит сценарий с тем же именем, который не принадлежит моей библиотеке? Могу ли я сообщить своей программе Popen(scripts.prog_viewer:main)?

+0

Разве вы не можете просто сделать 'от импорта scripts.prog_viewer основной; Основной() '? – cel

+0

@cel Мне нужно запустить его в подпроцессе. – Debilski

ответ

2

Вы можете запустить команду питона с Popen, например:

Popen('python -c "from scripts.prog import main; main()"', shell=True) 
+0

Я бы спал лучше, если бы знал, что это правильный способ сделать это, а не взломать это, как будто. :) – Debilski

+0

@Debilski Зачем вы называете это взломом? Если вы хотите запустить его с помощью модуля подпроцесса, и вы не хотите напрямую обращаться к точке входа, то это путь. – miindlek

+0

Не обижалось, я просто подумал бы, что что-то вроде этого уже есть в некоторых setuptools или pkg_resources модуле. Кроме того, если я когда-либо меняю точку входа, мне нужен поиск этой строки. (И гораздо менее понятно, что работает, просто глядя на таблицу процессов, что также может сделать отладку более сложной, потому что argv [0] - это «-c» вместо скрипта.) – Debilski

 Смежные вопросы

  • Нет связанных вопросов^_^