zoukankan      html  css  js  c++  java
  • Python程序打包--PyInstaller

    Python程序打包,首选“PyInstaller”,操作简单,功能丰富,而且它还支持Python2.7和Python3.3+

    安装PyInstaller

    pip install pyinstaller

    进入cmd,切换到解压的文件夹内
    命令的语法如下
    python pyinstaller.py [opts] yourprogram.py
    yourprogram.py可以包含路径 比如 D:test.py
    再说选项
    这里只说几个有用的
    -F, –one 生成单一可执行文件
    -D, –onedir 生成一个文件夹,里面包含需要的dll之类的东西 这个是默认的 也就是说不需要设置页可以使用
    -o DIR, –out=DIR 文件输出目录 可以不用
    -c, –console, –nowindowed 是否先出现一个黑色命令行然后再运行程序 默认方式
    -w, –windowed, –noconsole 设置无黑色命令行模式
    -i FILE.ICO, -i FILE.EXE,ID, -i FILE.ICNS, –icon=FILE.ICO, –icon=FILE.EXE,ID, –icon=FILE.ICNS
    这里很复杂 但是要用的话 通常用来指定程序图标, 不然图标就太难看了。。
    -i 图标文件路径 这样就能使用了
    综上所述 刨除无关的 我们基本上需要用到这样的命令
    python pyinstaller.py -F -w -i 图标路径 yourprogram.py
    这样能指定图标 且 单文件

    同时还有另一个方法,通过 xxx.spec文件生成 这个文件会在前面那条命令生成的目录里面
    python pyinstaller.py [opts] your-program.spec
    选项类型是一样的 但是通过上面的方法生成的 不填写的话 自身参数是上一条命令指定的

    我们由于用到了cx_Oracle,运行的时候出现了坑爹的提示
    cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle
    这条提示是在有黑色命令行的情况 就是 -c 的情况

    原因是缺少了 oraociei11.dll(Oracle 11g R2的话, 其他版本有一点变化)
    解决方法 就是用到了 xxx.spec文件 不过需要修改
    如果是 文件夹模式编译的 就在
    coll = COLLECT( exe,
    a.binaries ,
    strip=False,
    upx=False, 省略。。。。
    a.binaries后面加上 缺少的dll的信息
    形如
    coll = COLLECT( exe,
    a.binaries + [(‘oraociei11.dll’, ‘D:oraociei11.dll’, ‘BINARY’)],
    strip=False,
    upx=False,
    其中D:oraociei11.dll就是dll的位置

    如果是单文件生成的话,类似的改成
    exe = EXE(pyz,
    a.scripts,
    a.binaries + [(‘oraociei11.dll’, ‘D:oraociei11.dll’, ‘BINARY’)],
    a.zipfiles,
    a.datas,
    name=os.path.join(‘dist’, ‘worconquer.exe’),
    debug=False,
    strip=None,
    upx=True,
    注意红字部分

    还有就是 不修改spec文件 

    事实上,PyInstaller文档上还提到了一种方法,直接用“--add-data”命令,也可以办到,另外可以换成自己的图标,可以用“--icon”命令。其中,最后的“--clean”命令是清缓存。命令如下:

    pyinstaller --add-data=CheckLicense.exe;. --add-data=EncryptorDll.dll;. --icon=umbrella.ico --onefile --clean CheckLicenseEx.py
  • 相关阅读:
    C# a标签请求下载文件
    jquery datatable无数据提示不居中显示
    visual studio使用dos命令在生成项目时复制文件到指定目录
    技嘉,u盘安装win7,提示“找不到驱动器设备驱动程序”
    MQTT + apache-apollo服务器初学使用
    svn的基本使用方法
    linux之用户密码破解的操作
    mysql的部署
    nginx服务器
    部署
  • 原文地址:https://www.cnblogs.com/zpw-1/p/9836456.html
Copyright © 2011-2022 走看看