Problema com o carregamento win32file.pyd em Python 2.6
-
10-07-2019 - |
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.
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"]}}
)