Pyinstaller版本3.2
操作系统:win10
我的python脚本在Winpython Python Interpreters中运行良好。
但是当我使用Pyinstaller包时,python脚本包含caffe模块,
我将面临这个问题:
“You may load I/O plugins with the skimage.io.use_plugin
”
我按照上面的答案来修复我的spec文件(钩子文件??)。我一直在听到以下错误:(ValueError:要解压的值太多)
Traceback (most recent call last):
File "d:\python\winpython-64bit-2.7.10.3\python-2.7.10.amd64\lib\runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "d:\python\winpython-64bit-2.7.10.3\python-2.7.10.amd64\lib\runpy.py", line 72, in _run_code
exec code in run_globals
File "D:\Python\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\Scripts\pyinstaller.exe\__main__.py", line 9, in <module>
File "d:\python\winpython-64bit-2.7.10.3\python-2.7.10.amd64\lib\site-packages\PyInstaller\__main__.py", line 90, in run
run_build(pyi_config, spec_file, **vars(args))
File "d:\python\winpython-64bit-2.7.10.3\python-2.7.10.amd64\lib\site-packages\PyInstaller\__main__.py", line 46, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "d:\python\winpython-64bit-2.7.10.3\python-2.7.10.amd64\lib\site-packages\PyInstaller\building\build_main.py", line 788, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "d:\python\winpython-64bit-2.7.10.3\python-2.7.10.amd64\lib\site-packages\PyInstaller\building\build_main.py", line 734, in build
exec(text, spec_namespace)
File "<string>", line 16, in <module>
File "d:\python\winpython-64bit-2.7.10.3\python-2.7.10.amd64\lib\site-packages\PyInstaller\building\build_main.py", line 223, in __init__
for name, pth in format_binaries_and_datas(datas, workingdir=spec_dir):
File "d:\python\winpython-64bit-2.7.10.3\python-2.7.10.amd64\lib\site-packages\PyInstaller\building\utils.py", line 440, in format_binaries_and_datas
for src_root_path_or_glob, trg_root_dir in binaries_or_datas:
ValueError: too many values to unpack
这是我的spec文件:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['Demo_GenderAge.py'],
pathex=['D:\\Work\\test_code\\PyInstaller_Test_caffe'],
binaries=None,
datas=["skimage.io._plugins"],
hiddenimports=['skimage.io._plugins'],
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='Demo_GenderAge',
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='Demo_GenderAge')
有人可以告诉我如何解决它?
答案 0 :(得分:11)
datas
数组需要元组,而不是字符串。来自pyinstaller docs:
数据文件列表是元组列表。每个元组都有两个值, 两者都必须是字符串:
- 第一个字符串指定现在在此系统中的文件。
- 第二个指定在运行时包含文件的文件夹的名称。
我想将上述信息应用到您的代码中会导致:
...
datas=[("skimage.io._plugins", '.')],
...
我希望有所帮助!