#python #python-3.x #pyinstaller #python-pptx
Вопрос:
ppt.py:
from pptx import Presentation
newPPT = Presentation()
newPPT.save("MyPPT.pptx")
преобразование в exe: cmd == pyinstaller --onefile ppt.py
как только вы будете готовы, ошибка будет:
exception pptx.exc.PackageNotFoundError Raised when a package cannot be found at the specified path.
в документе пакета pptx.
есть ли способ сделать это возможным?
Спасибо
Комментарии:
1. Спасибо за редактирование
Ответ №1:
У меня была та же проблема, и я, наконец, понял, как ее исправить, основываясь на аналогичной проблеме: https://github.com/python-openxml/python-docx/issues/289
Решение заключается в редактировании файла спецификаций. Чтобы сгенерировать файл спецификации (если у вас его еще нет), запустите:
pyi-makespec --onefile yourprogram.py
откройте и отредактируйте файл sepc:
# -*- mode: python ; coding: utf-8 -*-
import sys # added line
from os import path # added line
site_packages = next(p for p in sys.path if 'site-packages' in p) # added line
block_cipher = None
# add in template in datas
a = Analysis(['your_file.py'],
pathex=['C:\Users\Desktop'],
binaries=[],
datas=[(path.join(site_packages,"pptx","templates"), "pptx/templates")],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
# rest of the file doesn't need any modification
Наконец, сгенерируйте exe-файл с помощью:
pyinstaller your_spec_file.spec
(Протестировано на компьютере с Windows 10 под управлением python 3.6.4)