【问题标题】:PyInstaller "ValueError: too many values to unpack"PyInstaller“ValueError:解压的值太多”
【发布时间】:2016-11-18 11:31:20
【问题描述】:

Pyinstaller 3.2 版

操作系统:win10


我的 python 脚本在 Winpython Python Interpreters 中运行良好。

但是当我使用 Pyinstaller 打包一个包含 caffe 模块的 python 脚本时, 我将面临以下问题: “You may load I/O plugins with the skimage.io.use_plugin

我按照上面的答案来修复我的规范文件(挂钩文件??)。而且我一直收到以下错误:(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

这是我的规范文件:

# -*- 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')

谁能告诉我如何解决?

【问题讨论】:

  • @Michael Mauderer 你能给我一些提示吗?

标签: python caffe pyinstaller pycaffe


【解决方案1】:

datas 数组需要元组,而不是字符串。来自pyinstaller docs

数据文件列表是一个元组列表。每个元组有两个值, 两者都必须是字符串:

  • 第一个字符串指定当前系统中的一个或多个文件。
  • 第二个指定运行时包含文件的文件夹名称。

我想将上述信息应用于您的代码会导致:

...    
datas=[("skimage.io._plugins", '.')],
...

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-20
    • 2015-09-04
    • 2017-11-25
    • 2015-12-20
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多