2013-12-12 13 views
6

Mój problem polega na tym, że py2exe generuje plik dziennika po uruchomieniu. Nie generuje, ponieważ wystąpił błąd podczas uruchamiania programu. W pliku dziennika znajduje się standardowy wydruk konsoli!Py2Exe generuje plik dziennika

Jak mogę to zrobić, aby żaden plik dziennika nie wygenerował?

tutaj moja py2exe kod instalacyjny:

from distutils.core import setup 
import py2exe, sys, os 
sys.argv.append('py2exe') 
setup(
    options = {'py2exe': {'bundle_files': 1, 'compressed': True}}, 
    windows = [{'script': "run.py"}], 
    zipfile = None 
) 
+0

Powinieneś również uwzględnić śledzenie błędów. –

+2

nie ma błędu! Po prostu chcę wyłączyć plik dziennika ... – Tekkzz

+0

Możesz ustawić "sys.stdout = os.devnull" w swoim skrypcie - lub wykonać równoważnik za pomocą przekierowania z wiersza polecenia. – martineau

Odpowiedz

4

W aplikacji GUI, py2exe przekierowuje sys.stderr do pliku dziennika i sys.stdout do obiektu, który ignoruje wszystkie zapisy. Aby uniknąć plik dziennika, zrób to w swoim programie w górnej części modułu głównego:

import sys 
sys.stderr = sys.stdout 

Albo niech py2exe utworzyć aplikację konsoli za pomocą słowa kluczowego console zamiast windows w setup.py.

+2

w pliku instalacyjnym lub w moim programie? – Tekkzz

+2

Wszystko nie działa. Czy mogę po prostu usunąć plik z py2exe? (boot_common.py)? – Tekkzz

+1

@ user3096402 Zgodnie z komentarzami w boot_common.py, konieczne jest pewne przekierowanie, aby uniknąć wyjątku spowodowanego przez zapis do domyślnego stderr. –

1

Prawdopodobnie możesz usunąć zawartość pliku! Może działać, ale musisz sprawdzić, czy Twój program potrzebuje określonej tam funkcji, a następnie może uzyskać błędy!

-1

Na czacie powiedziałeś, że chcesz używać Pythona 3, ale Py2Exe nie ma ... Dlaczego nie używasz cx_Freeze? Generuje bin i plik .exe. Możesz wykonać instalację za pomocą InnoSetup, a gra jest idealna!