Есть ли способ использовать pptx-python с python версии 3.7 и создавать exe с помощью pyinstaller?

#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)