PyInstaller and Python3.6 - Tuple Index

I wrote a small Python program, and most of the people who run it will be Windows users. I tried using pyinstaller and py2exe on two different devices: one with Windows and the other with arch-linux.

I reinstalled it more than once using pyinstall install pyinstaller --no-cache

I always get the same error:

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 

So in this case, I just used testcript containing:

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

so that there are no problems with import, etc.

+5
source share
3 answers

Pyinstaller does not yet support Python 3.6. You can go back to Python 3.5 or try the cx_Freeze solution mentioned ... not sure what it does, although I think it replaces it.

+3
source

I ran into the same issue with python 3.6 and pyinstaller and first used cx_Freeze . It worked like a charm!

The contents of 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) 

Run cmd in the directory where setup.py is and run the following command: python setup.py build .

The executable file will be found in the assembly directory created by running cx_Freeze.

+2
source

The same thing here, I am also new and got the same problem as you. I got stuck for about 6 hours and tried everything. Finally, I also set cx_freeze and worked

pip install cx_freeze

0
source

Source: https://habr.com/ru/post/1262548/


All Articles