Я разрабатываю инструменты 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, и я думаю о переходе на второе решение. Однако я хотел бы узнать о других приемах, привычках, практике других разработчиков. Как бы Вы это сделали? Вы видите более удобный способ для пользователя, для разработчика, если это возможно, избегая увольнений? Любые советы и критики приветствуются.
Спасибо за ответ. Я еще не рассмотрел использование pyinstaller. Это может быть интересно для эксклюзивного проекта Python. Пока я ищу общий способ организации проектов. – kaligne
@kaligne oh, я думал, что это был эксклюзивный проект на python, я думаю, вы, возможно, захотите прояснить некоторые моменты в исходном вопросе, чтобы получить более качественные ответы :) – kalvatn
да, жаль, что все было не так ясно. Должен ли я удалить тег python? – kaligne