py2exe i głupi log z błędami
Pracuję obecnie nad przeportowaniem pewnego projektu napisanego w Pythonie na Linuksie do środowiska Windows. Ze względu na uciążliwą instalację Pythona i niezbędnych bibliotek na Windows chciałem skorzystać z py2exe, by otrzymać łatwy do przenoszenia plik wykonywalny. Problemy, które przy tym powstały to materiał na kilka wpisów, teraz jednak wspomnę tylko o jednym.
Otóż pewna biblioteka zgłasza podczas działania programu wyjątek. Nie jest to nic istotnego i w przypadku uruchomienia aplikacji w interpreterze Pythona dostajemy tylko śmieci w konsoli. Gorzej jest w przypadku pliku exe, gdyż po zamknięciu programu użytkownika straszy okienko „Errors occurred” zachęcające do przejrzenia loga: „See the log file ‘ścieżka do logu’ for details”. W rzeczy samej, w nazwa_aplikacji.exe.log mamy zapisane wspomniane ostrzeżenia, tylko po co one użytkownikowi?
Na szczęście możemy nakłonić py2exe, by zrezygnował z logowania błędów. Odnajdujemy plik boot_common.py, który u mnie znajduje się tu
C:\Python25\Lib\site-packages\py2exe\boot_common.py
i po linijce
sys.stdout = Blackhole()
dopisujemy
sys.stderr = Blackhole()
Rozwiązanie powstało na podstawie hacka opisanego na stronie py2exe.
