level 13
mingw64环境下的python3.7对mingw64环境有依赖,
目前发现的有zlib1.dll
在不同版本的mingw64上,可能对winpthread也有依赖
除此之外对sjlj.seh.libgcc等,pyinstaller是可以找到并打包的
2018年10月03日 02点10分
1
level 13
pyinstaller3.4目前用pip3默认无法安装.可以百度一下pyinstaller3.4 的whl文件用
pip3 install PyInstaller-3.4-py2.py3-none-any.whl
注意以上包名随版本可能不同
下楼开始说详细方法
2018年10月03日 02点10分
2
直接下载pyinstaller源码是可以安装的,这个本人试过了。命令大约是进入源码目录后pip3 setup.py install前两天试过,没这个whl安装方便
2018年10月03日 02点10分
level 13
用pyinstaller -F test.py命令生成的单个exe程序会因为打不到zlib1.dll而不能运行,除非把这个dll放进环境变量,注意放在同目录下根本没用,这应该是目前的一个bug
那么开始了。如果有一个hello.py文件
首先命令pyi-makespec -F hello.py生成一个hello.spec文件
在hello.spec文件内加入data=[],这行括号内加入datas=[('zlib1.dll','.')],
如果有多个dll依赖可以添加多个,注意多个文件名时中括号内的多个小括号用逗号隔开
最后pyinstaller -F test.spec生成一个真正的单文件exe
2018年10月03日 02点10分
3
level 13
分析一下:
python3官方包以及流行的anaconda的管理环境。默认用的vc库可能会把一些依赖dll写入环境变量目录。
在和一些同好的交流中没有发现pyinstaller打包时存在的这一现象(用msys2环境下的python3的人很少啊)。
msys2环境用python还是蛮爽的,但出了问题往往要自己搞定。安装上可以同过pacman直装,pip3直装,pip3手动(whl安装)解决大部分流行包的安装问题。
2018年10月03日 02点10分
4
level 13
最后的补充说明:
除了使用修改spec文件的配置外,还可以利用命令行的编译参数如下:
pyinstaller -F --add-data=zlib1.dll;. hello.py
对照一下spec文件就可以清楚知道命令该怎么用。
2018年10月03日 05点10分
5
level 1
楼主你好,使用msys2 python3 下的 pyinstaller打包时 出现了问题向你请教一下(使用背景是想在windows下开发GTK3 应用):
1)安装gtk官网步骤安装,没有问题;
2)因为想使用pyinstaller, 因此先安装了pip3 pacman -S mingw-w64-x86_64-python3-pip, 然后pip3 installer pyinstaller;
3)测试 pyinstaller 能否可用, 因此运行 pyinstaller --onedir main.py 打包
其中:main.py为 {
import tkinter
top = tkinter.Tk()
top.mainloop()
}
但运行时发生错误,
miracles-@DESKTOP-E9IKCIS MINGW64 ~/code
$ ./dist/main/main.exe
[11124] mod is NULL - structTraceback (most recent call last):
File "D:/msys64/mingw64/lib/python3.7/struct.py", line 13, in <module>
from _struct import *
ModuleNotFoundError: No module named '_struct'
[11124] mod is NULL - pyimod02_archiveTraceback (most recent call last):
File "D:/msys64/mingw64/lib/python3.7/site-packages/PyInstaller/loader/pyimod02_archive.py", line 28, in <module>
import struct
ModuleNotFoundError: No module named 'struct'
[11124] mod is NULL - pyimod03_importersTraceback (most recent call last):
File "D:/msys64/mingw64/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 24, in <module>
from pyimod02_archive import ArchiveReadError, ZlibArchiveReader
ModuleNotFoundError: No module named 'pyimod02_archive'
Traceback (most recent call last):
File "site-packages/PyInstaller/loader/pyiboot01_bootstrap.py", line 15, in <module>
ModuleNotFoundError: No module named 'pyimod03_importers'
[11124] Failed to execute script pyiboot01_bootstrap
请问解决方法,谢谢
2019年07月12日 03点07分
6