我有这个.spec脚本:
from glob import glob
import os
block_cipher = None
include_files = glob("./plugins/*/*.mxml") + \
glob("./plugins/*/*.xml") + \
glob("./plugins/*/*.py") + \
glob("./plugins/*/data/*") + \
glob("./plugins/*/keys/*") + \
glob("./*.xml") + \
glob("./doc/*") + \
glob("./zeromq*.zip") + \
glob("./layouts/*")
a = Analysis(['main_script.py'],
pathex=['C:\\main_repo\\src'],
binaries=[],
datas=[(file, os.path.dirname(file)) for file in include_files] + [("objcopy.exe", '.')],
hiddenimports=['library'],
hookspath=[],
runtime_hooks=[],
excludes=["tkinter", "multiprocessing", "unittest", "setuptools", "lib2to3", "pydoc_data"],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='main_script',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='main_script')
问题在于Pyinstaller将所有需要的文件打包到base_library.zip中,因此更改了脚本,插件和配置XML的查找目录,因此当我打开main_script.exe时,它将打开带有“给定目录不存在的新终端”: C:\ main_repo \ built_by_pyinstaller \ base_library.zip \ plugins”,因为它无法打开打包的zip文件中的文件夹。 是否可以使Pyinstaller停止压缩库以压缩并创建一个文件夹?
谢谢。
PS。我创建了一个名为“ base_library.zip”的文件夹,并将所有文件从压缩的zip文件移到了那里,因此C:\ main_repo \ built_by_pyinstaller \ base_library.zip \ plugins现在是有效路径,但是它看起来很糟糕,并且我正在寻找更好的解决方案