2013-02-14 6 views
5

Während py2exe Build ich folgende Fehlermeldung erhalten:py2exe: Fehler: libzmq.pyd: Keine solche Datei oder das Verzeichnis

creating python loader for extension 'win32clipboard' (C:\Python27\lib\site-packages\win32\win32clipboard.pyd -> win32clipboard.pyd) 
creating python loader for extension '_rl_accel' (C:\Python27\lib\site-packages\_rl_accel.pyd -> _rl_accel.pyd) 
*** finding dlls needed *** 
error: libzmq.pyd: No such file or directory 

Kann mir jemand erklären, wenn ich es wirklich brauchen, wo sie zu finden oder wie es ausschließen .

Dank Mads

Antwort

1

Ich bin nicht sicher, dass dies eine optimale Lösung, aber es funktioniert für mich:

  • herunterladen pyzmq von http://pypi.python.org/pypi/pyzmq
  • das Ei installieren easy_install
  • Kopie libzmq mit .dll von C: \ Python27 \ Lib \ Site-Pakete \ pyzmq-2.2.0.1-py2.7-win32.egg \ zmq nach C: \ Python27 \ dlls \

Mads

+1

Es gibt eine andere Lösung. Siehe ** [hier] (http://www.py2exe.org/index.cgi/Py2exeAndzmq) **. – pradyunsg

3

Leider ist dies keine nette Antwort, aber ich denke, es ist eine anständige Diagnose. Die py2exe wiki ist nicht auf dem neuesten Stand (zumindest denke ich). Ich glaube, dass Version 13.0.0 eine Änderung vorgenommen hat, in der libzmq.pyd libzmq.dll ersetzt. Py2exes normale Handhabung von Erweiterungsmodulen benennt dies in "zmq.libzmq.pyd" um, aber das bricht die Windows dll auf, da (z. B.) zmq.core._device.pyd explizit mit libzmq.pyd verknüpft ist.

Dies motiviert eine alternative hässliche Korrektur des Kopierens von zmq.libzmq.pyd zu libzmq.pyd im von py2exe erzeugten Ordner dist. Mit diesem Fix wird meine py2exe-Ausgabe exe korrekt ohne Importfehler ausgeführt.

10

Drei Schritte sind notwendig, damit es funktioniert:

  • libzmq.pyd von dlls mit dll_excludes Option ausschließen. Dies vermeidet "fehlende pyzmq.pyd" -Fehler.
  • Exclude zmq.libzmq (gleiche Sache) von Modulen mit excludes. Dies überspringt die übliche .pyd-Renamind- und Proxy-Funktion, die py2exe tut.
  • Fügen Sie zmq.backend.cython explizit mit includes Option hinzu, da py2exe es nicht durch pyzmq Backend-Auswahlcode sehen kann. Sie erhalten "no modul cffi" Fehler, wenn Sie dies nicht tun.

Beispiel:

import zmq.libzmq 

setup(
    # ... 
    zipfile='lib/library.zip', 
    options={ 
     'py2exe': { 
      'includes': ['zmq.backend.cython'], 
      'excludes': ['zmq.libzmq'], 
      'dll_excludes': ['libzmq.pyd'], 
     } 
    }, 
    data_files=[ 
     ('lib', (zmq.libzmq.__file__,)) 
    ] 
) 
0

Eine einfachere Lösung, die einer Lösung gearbeitet, wie oben gefordert libzmq Kompilieren - aber ich-m-LZY.

  1. Kopieren libzmq.pyd von C: \ python27 \ Lib \ sites-Pakete \ ZMQ zu c: \ python27 \ DLLs Import zmq.libzmq
  2. folgende Voraussetzungen erfüllt sein enthält und data_files in Ihrem Setup. Das ist es

    Setup ist ( # ... options = { 'py2exe': { 'enthält': [ 'zmq.backend.cython '] } }, data_files = [ (' lib‘, (zmq.libzmq. Datei,)) ] )

Verwandte Themen