запустить py2exe под windows 7, не могу создать файл под windows XP - PullRequest
0 голосов
/ 29 августа 2011

Я создал exe-файл из моего приложения Python + Gtk, используя py2exe.С windwos 7 это работает, но я не могу запустить его под windwos XP.Я получаю следующую ошибку:

Traceback (most recent call last):
  File "debug4iConnect.py", line 1, in <module>
  File "startApp.pyc", line 1, in <module>
  File "gtk\__init__.pyc", line 40, in <module>
  File "gtk\_gtk.pyc", line 12, in <module>
  File "gtk\_gtk.pyc", line 10, in __load
ImportError: DLL load failed: Impossibile trovare la procedura specificata.

Я попытался найти недостающие библиотеки DLL, используя зависимость-ходок, и получил следующие сообщения:

LoadLibraryA("c:\......\zlib.pyd") returned NULL. Error: Impossibile trovare il modulo specificato (126).

LoadLibraryExA("c:\.....\gtk._gtk.pyd", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL. Error: Impossibile trovare la procedura specificata (127).

"Impossibile trovare la procedura specificata" means: Impossible to find specified procedure. 
"Impossibile trovare il modulo specificato" means: Impossible to find the specified module.

Этот поток выглядит аналогичной проблемой, норешение не работает для меня: Py2exe - win32api.pyc Ошибка загрузки DLL ImportError

Кто-нибудь знает, что я могу сделать?

ОБНОВЛЕНИЕ: Я снова попробовал зависимостьи нашел несколько пропавших dll:

API-MS-WIN-SECURITY-BASE-L1-1-0.DLL
API-MS-WIN-SECURITY-LSALOOKUP-L1-1-0.DLL
API-MS-WIN-SERVICE-MANAGEMENT-L1-1-0.DLL
API-MS-WIN-SERVICE-MANAGEMENT-L2-1-0.DLL
API-MS-WIN-SERVICE-WINSVC-L1-1-0.DLL
CRYPTBASE.DLL
MSJAVA.DLL,

Я добавил их, и теперь я получаю эту ошибку:

GetProcAddress(0x00000000, "CtfImmCoUninitialize") called from "c:\windows\system32
\MSCTF.DLL" at address 0x746B279F and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "CtfImmLastEnabledWndDestroy") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B27DC and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "CtfImmSetCiceroStartInThread") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B281F and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "CtfImmIsCiceroStartedInThread") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2864 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "CtfImmIsCiceroEnabled") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B28A9 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "CtfImmIsTextFrameServiceDisabled") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B28E5 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "CtfImmEnterCoInitCountSkipMode") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B292C and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "CtfImmLeaveCoInitCountSkipMode") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2972 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmGetDefaultIMEWnd") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B29B6 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmReleaseContext") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B29EF and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmNotifyIME") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2A29 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmSetConversionStatus") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2A5C and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmGetConversionStatus") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2A9A and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmGetProperty") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2AD6 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmGetOpenStatus") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2B0A and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmGetContext") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2B40 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmSetOpenStatus") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2B75 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmInstallIMEA") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2BAC and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmGetDescriptionA") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2BE2 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmGetDescriptionW") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2C1A and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmGetIMEFileNameA") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2C52 and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmGetIMEFileNameW") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B2C8A and returned NULL. Error: Impossibile trovare la procedura specificata (127).
GetProcAddress(0x00000000, "ImmSetHotKey") called from "c:\windows\system32\MSCTF.DLL" at address 0x746B3168 and returned NULL. Error: Impossibile trovare la procedura specificata (127).

Когда я запускаю приложение, я получаю ошибку:

Fatal Python error: Interpreter not initialized (version mismatch?)

Когда я снова удаляю zlib.pyd, я получаю ImportError выше.Я обнаружил, что мой zlib.pyd из python2.4, и zlib.pyd для 2.7 больше не существует, его следует включить в python27.dll.Это правильно?

Ответы [ 3 ]

1 голос
/ 30 августа 2011

решено: я установил "bundle_files": 3 и "skip_archive": True теперь работает

0 голосов
/ 22 января 2014

У меня тоже была эта проблема.Для меня решением было исключить библиотеки MSWSOCK.dll и POWRPROF.dll из коллекции:

setup(
    # other options ommited...
    options={
        "py2exe":{
            "dll_excludes": ["POWRPROF.dll", "MSWSOCK.dll"]
        }
    },
)

Это также избавило от всех файлов MS_API _ *. Dll.

0 голосов
/ 29 августа 2011

Вы можете использовать обходчик зависимостей , чтобы найти недостающую DLL.

Возможно, вам нужно установить распространяемые файлы Visual Studio на компьютер с XP.

...