我试图通过修改spec文件中的二进制文件从生成的安装程序中删除所有windows dll,基本上删除所有以“api”开头的dll
a = Analysis(['PseudoDialog.py'],
pathex=['D:\\PSY'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
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='PseudoDialog',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False )
coll = COLLECT(exe,
a.binaries = [x for x in a.binaries if not x[0].startswith("api")],
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='PSY')
此代码失败,错误如下:
SyntaxError: keyword can't be an expression on the line
a.binaries = [x for x in a.binaries if not x[0].startswith("api")]
其实我最终不需要这么做。问题是我在运行pyinstaller时注意到了许多警告。它正在寻找大量以“api-win-ms”为前缀的windows dll,但工作失败了。你知道吗
我找到了一种方法,通过将它们的位置添加到环境path变量中来包含这些DLL。但后来我意识到,这些文件可能会在一个主要补丁中发生变化,更糟糕的是,禁止将windows dll打包为解决方案的一部分,并将它们部署到其他机器上。你知道吗
最后,我所需要做的就是忽略警告并在virtualenv中运行项目,以防止pyinstaller获取大量不必要的包和库。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐