2017-01-10 59 views
5

Napisałem mały program w Pythonie, a większość osób, które będą go uruchamiać, będzie użytkownikami systemu Windows. Próbowałem użyć Pyinstallera i py2exe na 2 różnych urządzeniach, jednym z Windows, a drugim z arch-linux.PyInstaller i Python3.6 - Indeks Tuple

I ponownie zainstalowany jest więcej niż jeden raz, używając pip3 zainstalować pyinstaller --no-cache

zawsze uzyskać ten sam błąd:

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 więc, w tym przypadku, po prostu użył testscript zawierające:

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

, aby upewnić się, że nie ma problemu z importem i tak dalej.

+1

Wygląda tak: "Python 3.6 nie jest jeszcze obsługiwany." https://github.com/pyinstaller/pyinstaller/issues/2286 – davedwards

+0

Cóż, dziękuję za szybką odpowiedź. Niestety, na moim komputerze z systemem Windows nie można utworzyć procesu, gdy piszę plik pyinstaller.exe do cmd. Postaram się to naprawić, wydaje się, że istnieje tu rozwiązanie: https://stackoverflow.com/questions/31808180/installing-pyinstaller-via-pip-leads-to-failed-to-create-process – Simulacrum

Odpowiedz

2

Mam ten sam problem z pythonem 3.6 i programem do usuwania złośliwego oprogramowania i użyłem po raz pierwszy cx_Freeze. To działało jak czar!

setup.py treść:

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) 

cmd rozpocznie się w katalogu, w którym setup.py jest i uruchom następujące polecenie: python setup.py budować.

Plik wykonywalny zostanie znaleziony w katalogu kompilacji utworzonym przez uruchomienie cx_Freeze.

0

To samo, ja też jestem nowy i mam ten sam problem co ty. Utknąłem około 6 godzin i spróbowałem wszystkiego. Nareszcie zainstalowałem także cx_freeze i zadziałało

3

Pyinstaller nie obsługuje jeszcze Pythona 3,6. Możesz powrócić do Pythona 3.5, lub wypróbować rozwiązanie cx_Freeze wymienione ... nie jestem pewien, co to jest, myślę, że to zastępuje.