2012-09-20 5 views
8

To jest mój bardzo prosty kod, argvs drukowania:Print nie działa, gdy skompilowany z py2exe

import sys 

argv=sys.argv 
for each in sys.argv: 
    print each 

tutaj jest wyjście, gdy prowadził:

e:\python>python test1.py 1 2 3 4 5 
test1.py 
1 
2 
3 
4 
5 

chcę zostać skompilowany, więc zrobiłem jeden z py2exe:

e:\python>python setup.py py2exe 

i moje setup.py:

from distutils.core import setup 
import py2exe, sys, os 

sys.argv.append('py2exe') 

setup(
    options = {'py2exe': {'bundle_files': 3}}, 
    windows = [{'script': "test1.py"}], 
    zipfile = None, 
) 

i nie otrzymuję żadnych danych wyjściowych po uruchomieniu mojego programu przez test1.exe 1 2 3 4 5 lub z dowolnymi innymi argumentami. sys.argvs powinien być listą zawierającą co najmniej jeden obiekt (test1.exe), dlatego myślę, że mam nieporozumienia z funkcją drukowania pythona. Czy jest coś, co robię źle tutaj? Chcę tylko, żeby wszystko zostało wydrukowane w linii poleceń. Programuję z Linuksa, ale użytkownicy Windows powinni używać mojego programu.

bardzo dziękuję

Odpowiedz

10
# ... 
windows = [{'script': "test1.py"}], 
#... 

windows opcja służy do tworzenia plików wykonywalnych GUI, który hamuje wyjście konsoli. Zamiast tego użyj: console:

from distutils.core import setup 
import py2exe, sys, os 

sys.argv.append('py2exe') 

setup(
    options = {'py2exe': {'bundle_files': 3}}, 
    console = [{'script': "test1.py"}], 
    zipfile = None, 
)