2014-03-02 47 views
3

平臺是64位Windows 7使用來自 http://games.2g2s.de/?page_id=223和PyGobject安裝Python 2.7版和GTK3從這裏 http://sourceforge.net/projects/pygobjectwin32/files/?source=navbar捆綁GTK3 +與cx_freeze

我使用的腳本提供維基:

from cx_Freeze import setup, Executable 
import os, site, sys 

## Get the site-package folder, not everybody will install 
## Python into C:\PythonXX 
site_dir = site.getsitepackages()[1] 
include_dll_path = os.path.join(site_dir, "gtk") 

## Collect the list of missing dll when cx_freeze builds the app 
missing_dll = ['libgtk-3-0.dll', 
      'libgdk-3-0.dll', 
      'libatk-1.0-0.dll', 
      'libcairo-2.dll', 
      'libcairo-gobject-2.dll', 
      'libgdk_pixbuf-2.0-0.dll', 
      'libpango-1.0-0.dll', 
      'libpangocairo-1.0-0.dll', 
      'libpangoft2-1.0-0.dll', 
      'libpangowin32-1.0-0.dll', 
      'libffi-6.dll', 
      'libfontconfig-1.dll', 
      'libfreetype-6.dll', 
      'libgio-2.0-0.dll', 
      'libglib-2.0-0.dll', 
      'libgmodule-2.0-0.dll', 
      'libgobject-2.0-0.dll', 
      'libpng15-15.dll', 
      ] 

## We also need to add the glade folder, cx_freeze will walk 
## into it and copy all the necessary files 
glade_folder = 'glade' 

## We need to add all the libraries too (for themes, etc..) 
gtk_libs = ['etc', 'lib', 'share'] 

## Create the list of includes as cx_freeze likes 
include_files = [] 
for dll in missing_dll: 
    include_files.append((os.path.join(include_dll_path, dll), dll)) 

## Let's add glade folder and files 
include_files.append((glade_folder, glade_folder)) 

## Let's add gtk libraries folders and files 
for lib in gtk_libs: 
    include_files.append((os.path.join(include_dll_path, lib), lib)) 

base = None 

## Lets not open the console while running the app 
if sys.platform == "win32": 
    base = "Win32GUI" 

executables = [ 
    Executable("materii.py", 
       base=base 
    ) 
] 

buildOptions = dict(
    compressed = False, 
    includes = ["gi"], 
    packages = ["gi"], 
    include_files = include_files 
    ) 

setup(
    name = "test_gtk3_app", 
    author = "Gian Mario Tagliaretti", 
    version = "1.0", 
    description = "GTK 3 test", 
    options = dict(build_exe = buildOptions), 
    executables = executables 
) 

exe文件被編譯但無法運行,因此

Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", in <module> 
    exec code in m.__dict__ 
    File "materii.py", line 2, in <module> 
    File "C:\Python27\lib\site-packages\gi\__init__.py", line 27, in <module> 
    from ._gi import _API 
    File "ExtensionLoader_gi__gi.py", line 22, in <module> 
    File "ExtensionLoader_gi__gi.py", line 14, in __bootstrap__ 
ImportError: DLL load failed: The specified module could not be found. 

materii.py的第2行是

from gi.repository import Gtk 

你能幫我嗎?

+0

你可以顯示日誌凍結它嗎?把它放入一個pastebin,通常很長。文件夾中的DLL是否在該腳本期望的位置? –

+0

你有沒有試過設置GI_TYPELIB_PATH – Naib

+0

有些dll在那裏丟失。嘗試運行python文件並在該進程上使用[ListDLLs.exe](http://technet.microsoft.com/sk-sk/sysinternals/bb896656.aspx)('listdlls.exe test_gtk3_app.py> output.txt') 。並從輸出檢查女巫圖書館在輸出和'C:\ python27 \ Libs \ side-packages \ gtk',然後你必須編輯'setup.py'中的missing_dlls列表。我一直在努力,但我使用** python3 ** – microo8

回答

3

轉到侏儒目錄,這本身就是在站點包 DIR和手動從這個目錄中的所有的.dll文件(不是嵌套一個)複製到您的編譯/你 - 應用 - dir/ dir。它會起作用。