Pacote PyGObject Python 3 programa com pynsist?
Gostaria de empacotar um programa Python3-PyGObject com o pynsist. O repositório tem um exemplo para o PyGTK e me fez pensar que não deveria ser muito difícil mudar o exemplo.
O exemplo pode ser encontrado aqui:
https://github.com/takluyver/pynsist/tree/master/examples/pygtkNeste arquivo (https://github.com/takluyver/pynsist/blob/master/examples/pygtk/grab_files.sh) Acho que é preciso pegar os arquivos direcionados ao GTK 3 (http://www.gtk.org/download/win32.php):
wget -O gtkbundle.zip http://win32builder.gnome.org/gtk+-bundle_3.6.4-20130921_win32.zip
wget -O pygobject.exe http://sourceforge.net/projects/pygobjectwin32/files/pygi-aio-3.14.0_rev12-setup.exe/download
wget -O pycairo.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo_1.10.2-2_win32.zip
Não tenho certeza do que fazer com a quarta linha, porque é meu entendimento atual que essas ligações já devem estar dentro do pacote gtk ou pygobject:
wget -O pygtk.exe http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.24/pygtk-2.24.0.win32-py2.7.exe
Eu tentei personalizar esse arquivo (https://github.com/takluyver/pynsist/blob/master/examples/pygtk/installer.cfg) para incluir (usegi
ao invés degi.repository
):
[Include]
packages=gi
Este erro resultante é:
raise ExtensionModuleMismatch(extensionmod_errmsg % ('Windows', path)) nsist.copymodules.ExtensionModuleMismatch: Found an extension module that will not be usable on Windows: /usr/lib/python3/dist-packages/gi/_gi.cpython-34m-x86_64-linux-gnu.so Put Windows packages in pynsist_pkgs/ to avoid this.
Alguém sabe qual é a abordagem correta para um programa (como, por exemplo, um destes:https://python-gtk-3-tutorial.readthedocs.org) seria?
Editar 1Após empacotar e instalar o programa no Windows, iniciar o programa de teste produz o seguinte rastreamento:
Traceback (most recent call last):
File "C:\Program Files (x86)\hellogtk\hellogtk.launch.pyw", line 31, in <module>
from gtk_test import main
File "C:\Program Files (x86)\hellogtk\pkgs\gtk_test.py", line 3, in <module>
from gi.repository import Gtk
File "C:\Program Files (x86)\hellogtk\pkgs\gi\__init__.py", line 42, in <module>
from . import _gi
ImportError: DLL load failed: The specified module could not be found.
É estranho que esse ImportError ocorra porque existe um_gi.pyd
-file no mesmo diretório (gi
) Enquanto o__init__.py
Este é o layout atual:
- directory
|- pynsist_pkgs
|-- cairo
|--- _cairo.pyd
|--- __init__.py
|-- gi
|--- _gobject
|--- overrides
|--- repository
|--- __init__.py
|--- _gi.pyd
|--- ...
|-- gtk
|--- bin
|--- etc
|--- lib
|--- manifest
|--- share
|-- dbus
|--- __init__.py
|--- ...
|-- gnome
|--- ...
|-- pygtkcompat
|--- ...
|-- _dbus_bindings.pyd
|-- _dbus_glib_bindings.pyd
|-- ...
|- gtk_test.py
|- grab_files.sh
|- installer.cfg
|- gtk_preamble.py
E eu usei opy-3.4-64
pasta das ligações pygobject. O Linux em que estou criando o pacote é de 64 bits e o Windows em que estou executando o programa também é de 64 bits.
Usando Dependency-Walker, posso ver que 2 DLLs estão ausentes:GPSVC.DLL
eIESHIMS.DLL
.
Encontrei essas 2 DLLs no sistema e as copiei em diretórios diferentes do programa de teste, mas não funcionou.
Edição 4:Isso pode ser útil para o erro de importação:
importar gtk / glib produz ImportError: falha no carregamento da DLL