Pergunta

Eu não posso fazer py2exe para embalar corretamente mesmo um script simples que usa win32file Estou constantemente recebendo a seguinte mensagem de erro:

Traceback (most recent call last):
  File "dependency_checker.py", line 1, in <module>
  File "win32file.pyc", line 12, in <module>
  File "win32file.pyc", line 10, in __load
ImportError: DLL load failed: The specified procedure could not be found.

Os olhares de script da seguinte forma:

import win32file
print "Hello world!"

E aqui está o setup.py:

from distutils.core import setup
import py2exe
setup(console=['dependency_checker.py'])

Você já teve problema semelhante antes?

Versões:

Python 2.6.2, 0.6.9 py2exe, pywin32-214, Windows 7 e Windows XP Pro como máquina de destino

UPDATE:

  • Posso executar o programa empacotado no meu Windows 7, onde ele foi criado, mas não consigo executá-lo na máquina XP.
  • A parte de win32file.pyc que lança os olhares de erro da seguinte forma:

    >>> imp.load_dynamic('win32file', r'C:\test\setup-test\src\dist\win32file.pyd')
    

A linha acima na minha caixa de dev (Windows 7) é executado corretamente, enquanto na caixa de teste (Windows XP) retorna o erro.

Atualização ** 2: **

Quando eu uso imp.load_dynamic para carregar win32file instalação python forma, então eu posso recarregar o win32file.pyd para a pasta dist sem o erro.

Foi útil?

Solução

O soution era remover mswsock.dll que foi copiado para o diretório dist por py2exe incorretamente.

Eu usei procmon e listdll para verificar o que é carregado por win32file.pyd quando a importação for bem sucedido eo que DLL são carregados quando importação falhar. Em seguida, ter a lista de DLLs eu verifiquei se eles são carregados corretamente ie. dlls python de dist pasta e DLLs do Windows de pasta do Windows.

Aqui está o setup.py que funciona bem

from distutils.core import setup
import py2exe
setup(console=['dependency_checker.py'],
     options={'py2exe': {"dll_excludes": ["mswsock.dll", "MSWSOCK.dll"]}}
     )
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top