• Как правильно упаковать .py в .exe?

    Попробуй cx_freeze.
    python -m pip install cx_freeze
    Далее создай файл setup.py и внеси в него следующий код:
    import some_module
    from cx_Freeze import setup, Executable
    
    executables = [Executable('example.py')]
    
    setup(name='hello_world',
          version='0.0.1',
          description='My Hello World App!',
          executables=executables)

    В начале импортируй все модули, которые использует твоя программа.
    Далее запускай консоль и пиши:
    python setup.py build
    Ответ написан
    Комментировать
  • Как правильно упаковать .py в .exe?

    @DollaR84
    Ну судя по ошибке - telebot не может найти файл сертификата SSL.
    Дело все в том, что при запуске exe, созданного pyinstaller, сначала все содержимое распаковывается во временную папку, а затем запускается из нее, соответственно путь другой.
    Поэтому что можно сделать в вашем случае:
    файл SSL добавить в упаковку pyinstaller, с помощью опции --add-data. Пример:
    pyinstaller -F --add-data ssl;. main.py
    Где:
    ssl - файл сертификата;
    . - точка означает текущий каталог, это если файл сертификата лежит в корне со скриптом.

    Затем в самом скрипте надо добавить следующий код:
    import os
    import sys
    def resource_path(relative_path):
        """ Get absolute path to resource, works for dev and for PyInstaller """
        if getattr(sys, 'frozen', False):
            base_path = sys._MEIPASS
        else:
            base_path = os.getcwd()
        return os.path.join(base_path, relative_path)

    Затем в том коде, где вы передаете данный файл боту, надо задавать его через данную функцию.
    Ответ написан
    Комментировать