设置环境组织python项目

2024-04-25 02:27:55 发布

您现在位置: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模块启动一个例程。最后,用户只需按以下方式调用脚本:

^{pr2}$

或者,取决于解释器版本

^{3}$

目前我还有一个bash脚本,pylauncher.sh页,用于设置Python路径、Python库、将输入重定向到日志中等等。因此,用户不必指定所有这些,而必须启动命令:

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

这很方便,因为它对用户隐藏了环境信息。但在我看来,也许用户不应该为调用启动程序而烦恼。因此,我考虑去掉python脚本程序{1,2}.py并将pylauncher.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脚本的第一个解决方案,我正在考虑更改为第二个解决方案。不过,我想知道其他软件开发人员的做法、习惯和做法。你会怎么做?你有没有看到更方便的方式,为用户,为开发人员,如果可能的话,避免冗余?欢迎任何建议和批评。在


Tags: 用户py程序src脚本environmentshscripts
1条回答
网友
1楼 · 发布于 2024-04-25 02:27:55

您是否考虑过将这些工具打包为单个文件可执行文件?在

这里有一个非常基本的例子来说明我使用pyinstaller的意思,我在linux系统上,但是这个工具是跨平台的,看起来有很好的文档记录。在

需求(用于构建的python头和安装包的PIP)

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

要生成的文件

^{pr2}$

用法(F标志指示pyinstaller创建单个文件可执行文件)

kalvatn@workstation|/tmp/python-executable » pyinstaller -F hello.py
kalvatn@workstation|/tmp/python-executable » ./dist/hello
hello world

医生

相关问题 更多 >