J'ai écrit un petit programme Python et la plupart des personnes qui vont l'exécuter seront des utilisateurs de Windows. J'ai essayé d'utiliser pyinstaller et py2exe sur 2 appareils différents, l'un sous Windows et l'autre sous Arch-linux.
Je l'ai réinstallé plus d'une fois, à l'aide du programme d'installation py3 - no-cache
J'ai toujours la même erreur:
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
Donc, dans ce cas, je viens d'utiliser un script de test contenant:
#!/usr/bin/env python3.6
print("hello world")
pour s'assurer qu'il n'y a pas de problème avec les importations et ainsi de suite.
Pyinstaller ne prend pas encore en charge Python 3,6. Vous pouvez revenir à Python 3.5 ou essayer la solution cx_Freeze mentionnée ... je ne suis pas sûr de ce qu’elle fait, je pense qu’elle la remplace.
Je rencontre le même problème avec Python 3.6 et pyinstaller et l’utilise pour la première fois avec cx_Freeze
. Ça a marché comme sur des roulettes!
Contenu 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)
Lancez cmd dans le répertoire où se trouve setup.py
et exécutez la commande suivante: python setup.py build .
L'exécutable se trouvera dans le répertoire de construction créé par cx_Freeze run.
Idem ici, je suis aussi nouveau et j'ai le même problème que vous. Je suis resté coincé environ 6 heures et j'ai tout essayé. Enfin, j'ai aussi installé cx_freeze et cela a fonctionné
pip installer cx_freeze