【发布时间】:2016-04-29 09:32:39
【问题描述】:
我开发 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重命名为程序{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在scripts文件夹中:
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 脚本,我正在考虑更改为第二个解决方案。不过,我想了解其他软件开发人员的做法、习惯和做法。你会怎么做?您是否看到更方便的方式,对于用户,对于开发人员,如果可能的话避免冗余?欢迎任何建议和批评。
【问题讨论】:
标签: python bash environment-variables