我正在尝试使用PyInstaller构建一个单文件EXE,它包含一个图像和一个图标.我无法为我的生活而努力--onefile.
如果我这样做--onedir,一切工作都很顺利.当我使用时--onefile,它找不到引用的附加文件(运行编译的EXE时).它找到了DLL和其他一切都很好,只是不是两个图像.
我查看了运行EXE时生成的temp-dir(\Temp\_MEI95642\例如),文件确实在那里.当我将EXE放入该临时目录时,它会找到它们.非常困惑.
这是我添加到.spec文件中的内容
a.datas += [('images/icon.ico', 'D:\\[workspace]\\App\\src\\images\\icon.ico', 'DATA'),
('images/loaderani.gif','D:\\[workspace]\\App\\src\\images\\loaderani.gif','DATA')]
Run Code Online (Sandbox Code Playgroud)
我应该补充一点,我也试过不把它们放在子文件夹中,没有什么区别.
编辑: 由于PyInstaller更新,标记的较新答案正确.
我已经使用 PikePDF 和 PDFminer3 构建了一个工作 py 脚本,它将从我的桌面上取下一个 PDF 并从可用的单词中创建一个 txt 文件。
这样做的目的是帮助我的工作团队修改通常无法复制粘贴进行修改的法律文件(因此必须手动输入)。由于我的大多数同事都反对设置 anaconda 和使用 python,我想使用 pyinstaller 将我的脚本转换为 .exe。
当我运行由 pyinstaller 创建的应用程序时,我能够在出现此错误之前完成一些初步输入:
Traceback <most recent call last>:
File 'PDF2TEXT.py', line 35, in <module>
ModuleNotFoundError: No module named 'pikepdf._cpphelpers'
(10688) Failed to execute script PDF2TEXT
Run Code Online (Sandbox Code Playgroud)
在 pyinstaller 的编译过程中,我还收到很多与缺少 anaconda3 dll 文件有关的连续警告:
Warning: lib not found: msmpi.dll dependency of c:\users\anejar1\appdata\local\continuum\anaconda3\Library\bin\mkl_blacs_mspi_ilp64.dll
Run Code Online (Sandbox Code Playgroud)
我已经做了一些挖掘并在其他线程上应用了一些解决方案,但没有成功,包括运行:
pyinstaller --path= [path to pikepdf] --path= [path to pdfminer3] -F PDF2TEXT.py
Run Code Online (Sandbox Code Playgroud)
和
pyinstaller --hidden-import=pikepdf --hidden-import=pdfminer3 -F PDF2TEXT.py
Run Code Online (Sandbox Code Playgroud)
底层代码很短(并且工作正常)并且只从 pikepdf、pdfminer 和 os 导入: …