pyinstaller 不会打包 python-docx

问题描述 投票:0回答:1

目标 我想将一个简单的 python 应用程序(我们称之为 wordy)打包成一个 single .exe 文件,该应用程序使用 python-docx 库创建一个基本的 Word 文档。

设置 PyCharm 项目以诗歌作为解释器。选择后安装的 python-docx 位于“设置”>“项目”>“Python Intepreter”中。

使用

pip show python-docx
,我在这里找到了docx:

C:\Users\myusername\AppData\Local\pypoetry\Cache\virtualenvs\wordy-nOisIA6h-py3.10\Lib\site-packages\docx

问题 该程序在 PyCharm 中运行时的工作文件。 但是我在 /dist 文件夹中创建的可执行文件在从命令行运行时抛出错误:

ModuleNotFoundError: No module named 'docx'

我尝试了什么 以下命令是从 virtualenv 中的 PyCharm 终端运行的

(docxpoc-nOisIA6h-py3.10) PS C:\wordy> 
pyinstaller --onefile main.py --name "wordy1.exe"
pyinstaller --onefile main.py --name "wordy2.exe" --hidden-import docx
pyinstaller --onefile main.py --name "wordy3.exe" --additional-hooks-dir myhooks.py
pyinstaller --onefile main.py --name "wordy4.exe" --collect-data "docx" 


pyi-makespec --onefile main.py
pyinstaller .\main.spec

只有当我使用 .spec 文件时,我才会收到除上述错误消息之外的其他内容。我得到:

  File "main.py", line 2, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 495, in exec_module
  File "wordy.py", line 1, in <module>
  File "C:\Users\myusername\AppData\Local\Temp\_MEI112442\docx\__init__.py", line 7, in <module>
    from docx.image.bmp import Bmp
  File "C:\Users\myusername\AppData\Local\Temp\_MEI112442\docx\image.py", line 3, in <module>
    from __future__ import annotations
ModuleNotFoundError: No module named '__future__'

顺便说一句,我在这个位置没有看到

"C:\Users\myusername\AppData\Local\Temp\_MEI112442
。```

我对生成的规范文件所做的唯一更改是在 datas=[] 行中插入一个元组。

datas=[("C:/Users/myusername/AppData/Local/pypoetry/Cache/virtualenvs/wordy-nOisIA6h-py3.10/Lib/site-packages/docx/*.*", "docx")]

我也尝试了

hiddenimports=["docx"]
,但最终得到了原来的错误消息。

python pycharm pyinstaller docx python-docx
1个回答
0
投票

MEI文件夹是由pyinstaller在运行时生成的。 如果您使用的是 python 3,您的问题可能是代码中的“未来”导入。

© www.soinside.com 2019 - 2024. All rights reserved.