How do i compile .py to a .exe?

2019-07-16 13:36发布

问题:

I am trying to compile my .py script into a .exe using py2exe using this code:

from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {'py2exe': {'optimize': 2}},
windows = [{'script': "get.py"}],
zipfile = "shared.lib",
)

I get this in my console:

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
running py2exe
*** searching for required modules ***
*** parsing results ***
creating python loader for extension 'unicodedata' (C:\Python27\DLLs\unicodedata.pyd -> unicodedata.pyd)
creating python loader for extension 'select' (C:\Python27\DLLs\select.pyd -> select.pyd)
creating python loader for extension '_hashlib' (C:\Python27\DLLs\_hashlib.pyd -> _hashlib.pyd)
creating python loader for extension 'bz2' (C:\Python27\DLLs\bz2.pyd -> bz2.pyd)
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
writing byte-compilation script 'c:\docume~1\user\locals~1\temp\tmpduooti.py'
C:\Python27\pythonw.exe -OO c:\docume~1\user\locals~1\temp\tmpduooti.py

Traceback (most recent call last):
  File "C:\Documents and Settings\User\Application Data\.minecraft\saves\HuFAdventure\setup.py", line 7, in <module>
    zipfile = "shared.lib",
  File "C:\Python27\lib\distutils\core.py", line 169, in setup
    raise SystemExit, "error: " + str(msg)
SystemExit: error: command 'C:\Python27\pythonw.exe' failed with exit status 1
>>> 

Could you please help.

回答1:

Are you intentionally building a gui based script? If not change windows = [{'script': "get.py"}], to console = ["get.py"],:

from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
    options = {'py2exe': {'optimize': 2}},
    console = ["get.py"],
    zipfile = "shared.lib",
)

If you are building a windowed program then ignore this and leave a comment so I can delete this answer ).