2016-04-29 4 views
1

Я разрабатываю инструменты Python. Каждый инструмент является частью проекта программирования, с исходными файлами и сценариями для запуска программы. Здесь язык Python, но может быть любым другим.Организация проекта python с установочной средой

src/ 
    package1/ 
    module1.py 
    package2/ 
    module2.py 
scripts/ 
    program1.py # parses arguments; uses modules; starts workflow. 
    program2.py 
    pylauncher.sh # sets environment; deals with output; calls any specified python script. 

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

$ cd path/scripts 
$ python program1.py arg1 arg2 

или, в зависимости от версии интерпретатора,

$ cd path/scripts 
$ path/to/the/right/python program1.py arg1 arg2 

В настоящее время у меня есть Баш скрипт, pylauncher.sh, что я использовать для установки пути Python, библиотек Python, перенаправления ввода в журнал и т. д. Таким образом, пользователь не должен указать все это и должен запустить команду:

$ cd path/scripts 
$ ./pylauncher program1.py 

Это удобно, так как она скрывает среды вещи от пользователя. Но мне кажется, что, возможно, пользователю не стоит беспокоиться о вызове пусковой установки. Поэтому я собираюсь избавиться от программы сценариев python {1,2} .py и переименовать pylauncher.sh в программу {1,2} .sh. При этом процедура, которая использовалась в предыдущей программе {1,2} .py, была бы переведена в основную функцию модуля или просто перемещена туда.

Структура проекта будет выглядеть следующим образом:

src/ 
    package1/ 
    module1.py 
    program1.py # parses arguments; use python modules; starts the program workflow. 
    package2/ 
    module2.py 
    program2.py 
scripts/ 
    program1.sh # sources set_environment.sh; calls program1.py 
    program2.sh # sources set_environment.sh; calls program2.py 
    set_environment.sh 

Или выпускающей программу {1,2} .py в папке скриптов:

src/ 
    package1/ 
    module1.py 
    package2/ 
    module2.py 
scripts/ 
    program1.py # parses arguments; starts the program workflow. 
    program1.sh # sources set_environment.sh; calls program1.py 
    program2.py 
    program2.sh # sources set_environment.sh; calls program2.py 
    set_environment.sh 

Пользователь должен, в конце концов, придется использовать

$ cd path/scripts 
$ ./program1.sh 

Таким образом, я в настоящее время использую первое решение с скриптом pylauncher bash, и я думаю о переходе на второе решение. Однако я хотел бы узнать о других приемах, привычках, практике других разработчиков. Как бы Вы это сделали? Вы видите более удобный способ для пользователя, для разработчика, если это возможно, избегая увольнений? Любые советы и критики приветствуются.

ответ

1

Рассматривали ли вы упаковку этих инструментов как однофайловых исполняемых файлов?

Вот очень простой пример того, что я имею в виду с помощью pyinstaller, я нахожусь в Linux-системе, но инструмент является кросс-платформенным и выглядит хорошо документированным.

требования (заголовки питона для строительства и ПГИ, чтобы установить пакет)

sudo apt-get install python-dev python-pip 
sudo pip install pyinstaller 

файл построить

[email protected]|/tmp/python-executable » cat hello.py 
#!/usr/bin/env python 

if __name__ == '__main__': 
    print 'hello world' 

использование (флаг -F инструктирует pyinstaller, чтобы создать единый исполняемый файл)

[email protected]|/tmp/python-executable » pyinstaller -F hello.py 
[email protected]|/tmp/python-executable » ./dist/hello 
hello world 

doc

+0

Спасибо за ответ. Я еще не рассмотрел использование pyinstaller. Это может быть интересно для эксклюзивного проекта Python. Пока я ищу общий способ организации проектов. – kaligne

+0

@kaligne oh, я думал, что это был эксклюзивный проект на python, я думаю, вы, возможно, захотите прояснить некоторые моменты в исходном вопросе, чтобы получить более качественные ответы :) – kalvatn

+0

да, жаль, что все было не так ясно. Должен ли я удалить тег python? – kaligne

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

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