我最近使用GTK完成了一个应用程序,我在Windows上安装了MSYS2和MINGW64。到目前为止,我只能从MSYS2命令行运行应用程序;但是,我正处于需要部署应用程序的阶段(构建安装程序和可执行文件)。
这是我到目前为止从msys2采取的路线:
python3 setup.py py2exe
运行时,我得到了可怕的IndexError: tuple index out of range
。经过一些研究,我得知我得到了这个,因为py2exe还没有支持python> 3.4
pinstaller:从msys2终端,我甚至无法解压这个选项。我收到此错误代码distutils.errors.DistutilsPlatformError: VC 6.0 is not supported by this module
。这是我在Windows cmd中从msys2中取出的路线:
from _gi: cannot load the specified dll
。做了一些hacky故障排除(提供其他dll并通过我提供的_gi.pyd阅读)。这是我(相信)我学到的东西。 _gi.pyd指定python dll和visual c运行时dll包含import语句import gi catalyst(import _gi; from . import _.gi; etc.
)。这些指定了我项目的msys2环境使用的dll,所以我将它们添加到我的setup.py中。在这之后,我得到一个错误,注意到我的应用程序需要一个与另一个python dll(我试图提供的那个)冲突的python3.dll
。这是我认为我知道的,请有人,告诉我我错了,所以我不必用pyQt5重建我的应用程序(实际上没有msys2和mingw64工作):
我需要想办法只提供mingw64使用的python和c dll(即命令python setup.py bdist_msi
似乎自动包含并从我的安装程序解压缩的python3.dll)并将这些与我的应用程序捆绑在一起。
或者我需要找到一种方法来安装不同的python 3(python 3.4)到我的mingw64路径,以便使用py2exe(它安装在该环境中)。尽管如此,我还是要弄清楚如何为这个路径提供一个合适的msvc dll,以便应用程序仍能正常工作。
或者我需要重建我的应用程序。
有没有人成功开发了这些规范的Windows安装程序和可执行文件(msys2,mingw64,GTK + 3和mingw64的python3.6.5和GCC 7.3.0 64位)?有没有办法在msys2终端中进行上述任何一种方法来完成这项工作?有没有办法让这些工作在Windows cmd(我可以实际上让cx_Freeze和py2exe工作)?我有什么选择吗?
道歉为长篇大论。
Distribute GTK3 Applications made in Python with reduced MSYS2
以下是使用更新的MSYS2软件包分发用Python编写的GTK + 3应用程序的替代解决方案,但不会创建可执行文件,抱歉。
它只将python脚本所需的文件(只要它们在MSYS2文件夹中,包括gtk和python模块)复制到dist
文件夹,您可以将其复制到另一台Windows机器上。我已经进行了测试,输出大小约为51 MB。