我开发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
目前我还有一个bash脚本pylauncher.sh,我用它来设置Python路径,Python库,将输入重定向到日志等等。因此用户不必指定所有这些并且必须启动命令:
$ cd path/scripts
$ ./pylauncher program1.py
这很方便,因为它隐藏了用户的环境内容。但在我看来,也许用户不应该打电话给发射器。所以我想摆脱python脚本程序{1,2} .py并将pylauncher.sh重命名为program {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脚本的第一个解决方案,我正在考虑改用第二个解决方案。但是,我想知道其他软件开发人员的习惯,习惯和做法。你会怎么做?对于用户和开发人员,您是否看到了更方便的方式,如果可能的话,可以避免冗余?欢迎任何建议和评论。
答案 0 :(得分:1)
您是否考虑将这些工具打包为单个文件可执行文件?
这是我使用pyinstaller的一个非常基本的例子,我在Linux系统上,但该工具是跨平台的,并且看起来很好。
要求(用于构建的python头和用于安装包的PIP)
sudo apt-get install python-dev python-pip
sudo pip install pyinstaller
要构建的文件
kalvatn@workstation|/tmp/python-executable » cat hello.py
#!/usr/bin/env python
if __name__ == '__main__':
print 'hello world'
usage(-F标志指示pyinstaller创建单个文件可执行文件)
kalvatn@workstation|/tmp/python-executable » pyinstaller -F hello.py
kalvatn@workstation|/tmp/python-executable » ./dist/hello
hello world
文档