mac下的python程序使用pyinstall打包

mac下的python程序使用pyinstaller 打包注意事项

一、pyinstaller 打包特别注意事项:
注释掉程序里面的所有pirnt(),否则会会引起程序无法运行或崩溃。
二、pyinstaller 打包方法
1、打包时引用的文件,会自动打包进去,jpeg文件,配置文件等如果需要打包进去,需要在spec里面的datas里面配置。
2、打包命令:pyinstaller -y -D -i ./zy.ico OpenCV_GUI.py,先打包一下py,生成spec文件,参数一定使用—-D
3、然后编辑sepc文件,带入文件 datas=[(‘./haarshare/.xml’,‘./haarshare’),('./.jpeg’,‘./’)]
4、pyinstaller -y -D OpenCV_GUI.spec
说明:datas=[(‘本地路径’,‘打包后的路径’),(‘本地路径’,‘打包后的路径’)],支持通配符
5、本地目录下打包的文件读写,使用以下方法获取绝对路径,base_path=os.path.dirname(os.path.realpath(sys.argv[0]))
6、外面目录的设置参照函数 datadir(),函数功能:选择当前路径前第2级目录(用户目录),下的/Documents/vic_data目录,如果没有该目录则创建该目录。

def datadir():  #设置data目录,文稿下的vic_data
    data_dir=os.path.dirname(os.path.realpath(sys.argv[0]))
    data_dir=data_dir.split(os.sep)
    data_dir=data_dir[:4]
    data_dir=os.path.join(data_dir[0],data_dir[1],data_dir[2])
    data_dir='/'+data_dir+'/Documents/vic_data'
    if not os.path.exists(data_dir):
       os.makedirs(data_dir,0o777)
    return(data_dir)

7、如果打包后界面字体模糊,spec文件最后,app中加入一行info_plist={‘NSHighResolutionCapable’: ‘True’}
8、spec样本文件

# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['XXXX.py'],
             pathex=[],
             binaries=[],
             datas=[('./haarshare/*.xml','./haarshare'),('./*.jpeg','./'),('./readme.md','./')],
             hiddenimports=[],
             hookspath=[],
             hooksconfig={},
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts, 
          [],
          exclude_binaries=True,
          name='XXXX',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True,
          disable_windowed_traceback=False,
          target_arch=None,
          codesign_identity=None,
          entitlements_file=None , icon='zy.ico')
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas, 
               strip=False,
               upx=True,
               upx_exclude=[],
               name='XXXX')
app = BUNDLE(coll,
             name='XXXX.app',
             icon='./zy.ico',
             bundle_identifier=None,
             info_plist={'NSHighResolutionCapable': 'True'})

你可能感兴趣的:(学习心得,python)