pyinstaller

pip install 进行安装,将自动安装好依赖,
pyinstaller -F 要打包的文件,这种适用于一个文件的包,如果是要打包一个文件夹换参数

最好使用32位的机器和环境来打包,因为64大的包32位机器可能不兼容,

如果py脚本中有sys.argv传参。生成的exe文件就可以直接使用命令行 xxx.exe 参数1,参数2.....进行传值

问题,用64位win7打包传参卡住,即使不用arhv也是堵塞状态。

猜测,32位机器来打包,可能会解决

场景:在windows主机上做fping检测。
做了一个fping的脚本,使用下载下来的fping.exe文件来执行,windows上的fping和linux上的fping参数不同,需区别对待。最后将文件一起打包放入我们的监控agent客户端中。使客户端启动的时候自动支持fping的检测

解决:

  1. py脚本中使用的模块是subprocess和sys模块,使用sys.argv来接收传入参数,subprocess.popen来执行终端的命令,
  2. 对执行结果进行拆分,得出结果
  3. 将fping.exe文件和py脚本都放到要打包的文件夹中,直接在agent.d文件夹中配置好userparamsters.conf文件,其中配置的就是我们fping的自定义key,这里需要注意,自定义key传参时,直接使用 $1 $2 $3 $4 来进行传参,但是windows跟linux不通的一点在于,windows中如果$1 $2 $3。。。没有接受到参数是不会给程序传入控制'' 的,而在linux中会,所在在配置自定义key的时候需要使用 "" "$1" "$2" 这样才能传入空值。在zabbix中使用这个key的时候,可以在[]中什么也不写, , 也不用写,自动就会填入空值。
  4. 将准备好的整个文件夹压缩成一个包,(注意目录层级,以及文件的完整性)在setup.py中配置pyinstaller的打包参数,
    '--add- 包.zip'
  5. 执行setup.py文件, python setup.py
  6. 打包完成后,在dist文件夹下就会看到打好的包

注意,打包尽量用低版本的系统来进行打包,不然高版本系统打的包低版本使用不了,相反,低版本打的包对高版本系统兼容