Maison  >  Questions et réponses  >  le corps du texte

python - Pourquoi IndexError se produit-il lors de l'empaquetage avec Pyinstaller?

Il y a un game.py écrit dans mon package, puis j'utilise pyinstaller pour le packager, et la situation suivante se produit :

C:\package>pyinstaller -F game.py
166 INFO: PyInstaller: 3.2.1
166 INFO: Python: 3.6.1
166 INFO: Platform: Windows-10-10.0.14393-SP0
166 INFO: wrote C:\package\game.spec
182 INFO: UPX is not available.
182 INFO: Extending PYTHONPATH with paths
['C:\package', 'C:\package']
182 INFO: checking Analysis
182 INFO: Building Analysis because out00-Analysis.toc is non existent
182 INFO: Initializing module dependency graph...
199 INFO: Initializing module graph hooks...
202 INFO: Analyzing base_library.zip ...
Traceback (most recent call last):
  File "C:\Python36\Scripts\pyinstaller-script.py", line 11, in <module>
    load_entry_point('PyInstaller==3.2.1', 'console_scripts', 'pyinstaller')()
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\__main__.py", line 90, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\__main__.py", line 46, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\building\build_main.py", line 788, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\building\build_main.py", line 734, in build
    exec(text, spec_namespace)
  File "<string>", line 16, in <module>
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\building\build_main.py", line 212, in __init__
    self.__postinit__()
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\building\datastruct.py", line 161, in __postinit__
    self.assemble()
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\building\build_main.py", line 317, in assemble
    excludes=self.excludes, user_hook_dirs=self.hookspath)
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\depend\analysis.py", line 560, in initialize_modgraph
    graph.import_hook(m)
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\lib\modulegraph\modulegraph.py", line 1509, in import_hook
    source_package, target_module_partname, level)
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\lib\modulegraph\modulegraph.py", line 1661, in _find_head_p
ackage
    target_module_headname, target_package_name, source_package)
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\depend\analysis.py", line 209, in _safe_import_module
    module_basename, module_name, parent_package)
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\lib\modulegraph\modulegraph.py", line 2077, in _safe_import
_module
    module_name, file_handle, pathname, metadata)
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\lib\modulegraph\modulegraph.py", line 2167, in _load_module

    self._scan_code(m, co, co_ast)
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\lib\modulegraph\modulegraph.py", line 2585, in _scan_code
    module, module_code_object, is_scanning_imports=False)
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\lib\modulegraph\modulegraph.py", line 2831, in _scan_byteco
de
    global_attr_name = get_operation_arg_name()
  File "C:\Python36\lib\site-packages\pyinstaller-3.2.1-py3.6.egg\PyInstaller\lib\modulegraph\modulegraph.py", line 2731, in get_operatio
n_arg_name
    return module_code_object.co_names[co_names_index]
IndexError: tuple index out of range

Traceback montre que cela ne devrait pas poser de problème avec mon game.py. ce qui s'est passé?
La dernière version de pyinstaller3.2.1 est installée et Python est la version 3.6.

迷茫迷茫2711 Il y a quelques jours916

répondre à tous(3)je répondrai

  • PHP中文网

    PHP中文网2017-05-18 10:58:16

    Python 3.6 : IndexError : index de tuple hors plage, mentionné ci-dessus

    RTFM : PyInstaller 3.2.1 ne prend pas en charge Python 3.6

    Autrement dit, pyinstaller3.2.1 ne prend pas en charge Python 3.6.

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-18 10:58:16

    Il est recommandé de ne pas utiliser la dernière version de python pour pyinstaller. Au moins les versions inférieures à python3.5 sont réalisables.

    répondre
    0
  • 天蓬老师

    天蓬老师2017-05-18 10:58:16

    La prise en charge de la version 3.6 n'est pas encore disponible, mais elle peut être installée manuellement
    https://github.com/pyinstalle... Après avoir téléchargé le zip, retirez PyInstaller. Supprimez le dossier python/Lib/site-packages/PyInstaller et placez-y le PyInstaller décompressé et tout devrait aller bien. #_#

    répondre
    0
  • Annulerrépondre