it-swarm-eu.dev

PyInstaller a Python3.6 - Index Tuple

Napsal jsem malý program Python a většina lidí, kteří ho budou provozovat, budou uživatelé systému Windows. Snažil jsem se použít pyinstaller a py2exe na 2 různých zařízeních, jeden s Windows a druhý s Arch-linuxem.

Přeinstaloval jsem ho více než jednou, pomocí instalačního programu pip3 install - installer -no-cache

Pokaždé mám stejnou chybu:

    Sudo pyinstaller --windowed --onefile test.py
49 INFO: PyInstaller: 3.2
49 INFO: Python: 3.6.0
50 INFO: Platform: Linux-4.8.13-1-Arch-x86_64-with-Arch
51 INFO: wrote /home/XXXXX/test.spec
52 INFO: UPX is not available.
53 INFO: Extending PYTHONPATH with paths
['/home/XXXXX', '/home/XXXXX']
54 INFO: checking Analysis
54 INFO: Building Analysis because out00-Analysis.toc is non existent
54 INFO: Initializing module dependency graph...
57 INFO: Initializing module graph hooks...
58 INFO: Analyzing base_library.Zip ...
Traceback (most recent call last):
  File "/usr/bin/pyinstaller", line 11, in <module>
    load_entry_point('PyInstaller==3.2', 'console_scripts', 'pyinstaller')()
  File "/usr/lib/python3.6/site-packages/PyInstaller/__main__.py", line 90, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "/usr/lib/python3.6/site-packages/PyInstaller/__main__.py", line 46, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "/usr/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 788, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "/usr/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 734, in build
    exec(text, spec_namespace)
  File "<string>", line 16, in <module>
  File "/usr/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 212, in __init__
    self.__postinit__()
  File "/usr/lib/python3.6/site-packages/PyInstaller/building/datastruct.py", line 178, in __postinit__
    self.assemble()
  File "/usr/lib/python3.6/site-packages/PyInstaller/building/build_main.py", line 317, in assemble
    excludes=self.excludes, user_hook_dirs=self.hookspath)
  File "/usr/lib/python3.6/site-packages/PyInstaller/depend/analysis.py", line 560, in initialize_modgraph
    graph.import_hook(m)
  File "/usr/lib/python3.6/site-packages/PyInstaller/lib/modulegraph/modulegraph.py", line 906, in import_hook
    q, tail = self._find_head_package(parent, name, level)
  File "/usr/lib/python3.6/site-packages/PyInstaller/lib/modulegraph/modulegraph.py", line 990, in _find_head_package
    q = self._safe_import_module(head, qname, parent)
  File "/usr/lib/python3.6/site-packages/PyInstaller/depend/analysis.py", line 209, in _safe_import_module
    module_basename, module_name, parent_package)
  File "/usr/lib/python3.6/site-packages/PyInstaller/lib/modulegraph/modulegraph.py", line 1211, in _safe_import_module
    module_name, file_handle, pathname, metadata)
  File "/usr/lib/python3.6/site-packages/PyInstaller/lib/modulegraph/modulegraph.py", line 1295, in _load_module
    self._scan_code(m, co, co_ast)
  File "/usr/lib/python3.6/site-packages/PyInstaller/lib/modulegraph/modulegraph.py", line 1460, in _scan_code
    self._scan_bytecode_stores(co, m)
  File "/usr/lib/python3.6/site-packages/PyInstaller/lib/modulegraph/modulegraph.py", line 1505, in _scan_bytecode_stores
    name = co.co_names[oparg]
IndexError: Tuple index out of range

Takže v tom případě jsem použil testovací kód obsahující:

#!/usr/bin/env  python3.6
print("hello world")

, aby se ujistil, že není problém s dovozem a tak dále.

5
Simulacrum

Pyinstaller zatím nepodporuje Python 3,6. Můžete se vrátit k Pythonu 3.5, nebo zkusit zmínit řešení cx_Freeze ... nevíte, co to dělá, myslím, že to nahrazuje.

4
MGamsby

Spustil jsem stejný problém s pythonem 3.6 a pyinstallerem a poprvé jsem použil cx_Freeze. Fungovalo to jako kouzlo!

Obsah souboru Setup.py:

import cx_Freeze
exe = [cx_Freeze.Executable("downloads_folder.py")]
cx_Freeze.setup( name = "downloads",
                version = "1.0",
                options = {"build_exe": {"packages": ["errno", "os", "re", "stat", "subprocess","collections","pprint","shutil", "humanize","pycallgraph"], "include_files": []}},
                executables = exe)

Spusťte cmd v adresáři, kde je setup.py a spusťte následující příkaz: python setup.py build .

Spustitelný soubor se nachází v adresáři sestavení vytvořeném programem cx_Freeze run.

2
LetzerWille

Stejné tady, jsem také nový a dostal stejný problém jako vy. Přilepil jsem asi 6 hodin a vyzkoušel všechno. Nakonec jsem také nainstaloval cx_freeze a fungovalo to

pip install cx_freeze

0
apo