[Python] PyInstaller exe file doesn't create log file

Discussão em 'Python' iniciado por Stack, Novembro 30, 2025.

  1. Stack

    Stack Membro Participativo

    I'm trying to make my scripts executable so I can send it to my colleague. I'm using PyInstaller.

    pyinstaller --onefile main.py


    Which creates two folders. When I open dist/main.exe, something is wrong but I don't know what because it doesn't create a log file. I can't figure out why. When I run main.py, the log file is created immediately.

    Could you check it out?

    # coding=utf-8
    from __future__ import print_function
    import csv
    import os
    import time
    import logging
    import sys
    import traceback
    from spider import is_connected
    from database import Database
    filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'log.log')
    logging.basicConfig(filename=filename, level=logging.INFO, filemode='w')

    logger = logging.getLogger(__name__)
    def printProgressBar(iteration, total, prefix='', suffix='', decimals=1, length=100, fill=u'█'):
    """
    Call in a loop to create terminal progress bar
    @params:
    iteration - Required : current iteration (Int)
    total - Required : total iterations (Int)
    prefix - Optional : prefix string (Str)
    suffix - Optional : suffix string (Str)
    decimals - Optional : positive number of decimals in percent complete (Int)
    length - Optional : character length of bar (Int)
    fill - Optional : bar fill character (Str)
    """
    percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total)))
    filledLength = int(length * iteration // total)
    bar = fill * filledLength + '-' * (length - filledLength)
    print('\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix))
    # Print New Line on Complete
    if iteration == total:
    print()


    if __name__ == '__main__':
    print(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'log.log'))
    logger.info('Download started...')
    connected = is_connected()
    logger.info('Checking connection... {}'.format(connected))
    if not connected:
    logger.info('Program closed - no connection...')
    sys.exit()
    db = Database()
    if not os.path.isdir("output"):
    print('Nenasla sa zlozka "output"...')
    logger.info('No output folder')
    input()
    sys.exit()
    if not os.path.isdir("csv"):
    print('Nenasla sa zlozka "csv"...')
    logger.info('No csv folder')
    input()
    sys.exit()

    print('Spracovavanie suboru "input.csv"...')
    filename = 'output_{}.csv'.format(time.strftime("%Y%m%d-%H%M%S"))
    try:
    with open('csv/input.csv') as f:
    with open('output/'+filename, 'wb') as o:
    reader = csv.DictReader(f)
    reader.fieldnames.append('VAT added')
    writer = csv.DictWriter(o, fieldnames=reader.fieldnames)
    writer.writeheader()
    r_list = list(reader)
    rows = len(r_list)
    for n, line in enumerate(r_list):
    if n>0:
    printProgressBar(n,rows)
    code = line['Lot number'].strip()
    vat = db.get_or_set_vat(code)
    logger.info('outer vat')
    logger.info(vat)
    logger.info('YES' if vat else 'NO' if vat == False else 'UNKNOWN')
    line['VAT added'] = 'YES' if vat else 'NO' if vat == False else 'UNKNOWN'
    writer.writerow(line)
    except IOError as e:
    print(e)
    logger.info('IOError')
    logger.info(traceback.format_exc())
    print('Chyba: zrejme nenaslo subor "input.csv" - skontrolujte nazov suboru v zlozke csv')
    input()
    sys.exit()
    print()
    print('Koniec stahovania - {}'.format(filename))
    input()

    Continue reading...

Compartilhe esta Página