Есть ли обходной путь для использования Openpyxl с Pyinstaller? - PullRequest
0 голосов
/ 04 августа 2020

Я получаю сообщение об ошибке при попытке "заморозить" скрипт, импортирующий openpyxl, но .exe не создается. Те же ошибки, если сценарий содержит только «import openpyxl».

В настоящее время я использую Python 3.7.1, Pyinstaller 3.6 и Openpyxl 2.5.12. Я замораживаю скрипт, копируя его в папку скриптов Anaconda, а затем использую powershell для вызова pyinstaller, чтобы заморозить скрипт в один .exe. Я успешно заморозил некоторые другие скрипты, используя этот метод.

Поиск ответов в Интернете показал, что openpyxl не любит замораживания, но в ряде мест, похоже, говорилось, что им удалось найти обходные пути.

Я пробовал несколько предложенных решений, включая размещение файла перехвата в каталоге и его вызов как скрытый импорт в окне PowerShell: .\pyinstaller --hidden-import=openpyxl --onefile -w 'script.py'

Однако , ничего из того, что я нашел, не работает. Мой сценарий довольно большой, и я бы предпочел не переписывать его с использованием другого модуля Excel. Есть ли способ заморозить мой скрипт, чтобы позволить другим использовать его без установки python?

1 Ответ

0 голосов
/ 04 августа 2020

Попробуйте использовать cx_freeze, часто он дает меньше ошибок. Сохраните имена файлов, как указано ниже, и запустите build.bat файл

setup.py

import cx_Freeze
from cx_Freeze import * 

setup (
    name = "give_name",
    options = {'build_exe':{'packages': ['package_name']}},
    executables = [
        Executable(
            "give_name.py", 

        )

    ]

)

build.bat

py setup.py build
...