问题
Background
I have made a program that I am trying to turn into an executable using CX_Freeze. The setup.py
file is placed inside the same directory as all files I am working with. I don't use any extra libraries other than TKinter and OS.
The program works perfectly fine normally when I run it via PyCharm>Run
Version Numbers
- cx_Freeze ver: - 5.0
- cx_Freeze .whl: - cx_Freeze-5.0-cp36-cp36m-win_amd64.whl
- python ver: - 3.6.0b4
- pycharm ver: - 2016.3.1
This is my setup.py
file
import cx_Freeze
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
base = "Win32GUI"
cx_Freeze.setup(
name = "FileOrganizer-Client",
options = {"build_exe": {"packages":["tkinter","os"],"include_files":["icon2.ico"]}},
version = "0.01",
description = "File Organizer",
executables = [cx_Freeze.Executable("alpha_GUI.py", base=base, icon="icon2.ico")]
)
This is the error I get when I run "python setup.py build" inside the directory
C:\Users\Jeremy\PycharmProjects\cleanup>C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\python setup.py build running build running build_exe
Traceback (most recent call last): File "setup.py", line 18, in
<module>
executables = [cx_Freeze.Executable("alpha_GUI.py", base=base, icon="icon2.ico")]
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\dist.py",
line 349, in setup
distutils.core.setup(**attrs)
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\core.py",
line 148, in setup
dist.run_commands()
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\dist.py",
line 955, in run_commands
self.run_command(cmd)
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\dist.py",
line 974, in run_command
cmd_obj.run()
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\command\build.py",
line 135, in run
self.run_command(cmd_name)
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\cmd.py",
line 313, in run_command
self.distribution.run_command(command)
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\distutils\dist.py",
line 974, in run_command
cmd_obj.run()
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\dist.py",
line 219, in run
freezer.Freeze()
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\freezer.py",
line 621, in Freeze
self.finder = self._GetModuleFinder()
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\freezer.py",
line 333, in _GetModuleFinder
self.path, self.replacePaths)
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 150, in __init__
self._AddBaseModules()
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 161, in _AddBaseModules
self.IncludeModule("traceback")
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 651, in IncludeModule
namespace = namespace)
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 310, in _ImportModule
deferredImports, namespace = namespace)
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 403, in _InternalImportModule
parentModule, namespace)
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 474, in _LoadModule
self._ScanCode(module.code, module, deferredImports)
File
"C:\Users\Jeremy\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\finder.py",
line 562, in _ScanCode
arguments.append(co.co_consts[opArg])
IndexError: tuple index out of range
I am not very skilled or familiar with any of this so I hope I didn't leave anything out. Please let me know if any more information is needed.
回答1:
This has been submitted as a bug in cx_freeze, Python 3.6 has introduced some changes to code objects (most notably with PEP 523
) so it might have introduced certain bugs in applications that depend on them.
Keep track of the issue on cx_freeze
and remember that certain errors might pop up when using a newly released version of Python.
As an aside, since you import cx_Freeze
and access setup
and Executable
through there, there's no need for the:
from cx_Freeze import setup, Executable
line. You aren't using those names.
来源:https://stackoverflow.com/questions/41642021/compiling-script-py-with-py2exe-python-3-6-returns-multiple-errors