在使用pyppeteer+pyinstaller打包运行浏览器模拟程序时,出现NameError("name '__version__' is not defined") 错误问题。
导致该问题的原因是由于pyinstaller打包时没将pyppeteer的meta信息打进去,导致运行时候报错。
解决方式:增加 --copy-metadata参数
import PyInstaller.__main__
import os
if __name__ == '__main__':
pyi_args = [
'--upx-dir=F:\\soft\\upx-3.96-win64',
'--clean',
'--add-data={0};.'.format(os.path.realpath('config.ini')),
'--add-data={0};data'.format(os.path.realpath('data')),
'--add-data={0};static'.format(os.path.realpath('static')),
'--add-data={0};templates'.format(os.path.realpath('templates')),
'--copy-metadata=pyppeteer',
'--name=demo',
'main.py',
'-y'
]
print("pyinstaller " + " ".join(pyi_args))
PyInstaller.__main__.run(pyi_args=pyi_args)