使用PyInstaller打包CEFPython应用

在Windows7下使用PyInstaller对CEFPython进行打包,结果发现运行不起来,于是需要进行如下的一些改动:

# -*- mode: python -*-  

block_cipher = None  
import os  
import sys  

package_site = os.path.join(os.path.dirname(sys.executable),'Lib','site-packages','cefpython3')  
required_file = ['cef.pak','cef_100_percent.pak','cef_200_percent.pak',  
                 'cef_extensions.pak','devtools_resources.pak','icudtl.dat',  
                 'natives_blob.bin','snapshot_blob.bin']  
other_files = ['locales/en-US.pak','locales/zh-CN.pak']  

def get_package_data():  
    datas = []  
    for f in required_file:  
        d = os.path.join(package_site, f)  
        datas.append((d, ''))  
    for f in other_files:  
        d = os.path.join(package_site, f)  
        p = os.path.dirname(f)  
        datas.append((d, p))  
    return datas  

a = Analysis(['redmine.py'],  
             pathex=['C:\\Users\\wolf\\browser'],  
             binaries=[],  
             datas=get_package_data(),  
             hiddenimports=['json'],  
             hookspath=[],  
             runtime_hooks=[],  
             excludes=[],  
             win_no_prefer_redirects=False,  
             win_private_assemblies=False,  
             cipher=block_cipher)  
pyz = PYZ(a.pure, a.zipped_data,  
             cipher=block_cipher)  
exe = EXE(pyz,  
          a.scripts,  
          exclude_binaries=True,  
          name='redmine',  
          debug=False,  
          strip=False,  
          upx=True,  
          console=True )  
coll = COLLECT(exe,  
               a.binaries,  
               a.zipfiles,  
               a.datas,  
               strip=False,  
               upx=True,  
               name='redmine')

主要是拷贝相关的文件到当前目录,这样就可以完成相关的处理工作。
而对于Linux系统,需要将所有的文件拷贝到当前目录的cefpython3目录下才可以正常运行。

参考文章:

https://peter.sh/experiments/chromium-command-line-switches/
https://github.com/cztomczak/cefpython/blob/master/api/CommandLineSwitches.md

若文章对您有帮助,请打赏1块钱。您的支持,可以让我分享更多精彩的文章。转载请注明来源


知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。