2013-02-14 60 views
5

在py2exe編譯我收到以下錯誤:py2exe:錯誤:libzmq.pyd:沒有這樣的文件或目錄

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 

任何人都可以解釋,如果我真的需要它,在哪裏可以找到它或如何將它排除在外。

感謝 的Mads

回答

1

我不知道,這是一個最佳的解決方案,但它爲我工作:使用的easy_install

  • 副本libzmq

    • 下載pyzmq從http://pypi.python.org/pypi/pyzmq
    • 安裝蛋.dll從C:\ Python27 \ Lib \ site-packages \ pyzmq-2.2.0.1-py2.7-win32.egg \ zmq複製到C:\ Python27 \ dlls \

    Mads

  • +1

    還有另一種解決方案。請參閱** [這裏](http://www.py2exe.org/index.cgi/Py2exeAndzmq)**。 – pradyunsg 2013-02-14 10:56:10

    3

    不幸的是,這不是一個好的答案,但我認爲這是一個體面的診斷。

    py2exe wiki不是最新的(至少我認爲)。我相信版本13.0.0做了一個更改,其中libzmq.pyd替換了libzmq.dll。 Py2exe對擴展模塊的正常處理將其重命名爲「zmq.libzmq.pyd」,但是這打破了windows dll的查找,因爲(例如)zmq.core._device.pyd顯式鏈接到libzmq.pyd。

    這激發了將zmq.libzmq.pyd複製到py2exe生成的dist文件夾中的libzmq.pyd的另一個難題。有了這個修復,我的py2exe輸出EXE運行正常,無輸入錯誤。

    10

    三個步驟是必要的,使其工作:

    • dll的排除libzmq.pyddll_excludes選項。這可以避免「丟失pyzmq.pyd」錯誤。
    • 從模塊excludes中排除zmq.libzmq(同樣的事情)。這會跳過通常的.pyd renamind和代理py2exe。
    • 添加zmq.backend.cython明確與includes選項,因爲py2exe無法通過pyzmq後端選擇代碼看到它。如果你不這樣做,你會得到「沒有模塊命名cffi」的錯誤。

    實施例:

    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

    一種更簡單的解決方案,它的工作,如上述的一個解決方案需要編譯libzmq - 但I-M-LZY。

    1. 複製在C libzmq.pyd:\ python27 \ LIB \站點,包\ ZMQ到c:\ python27 \ DLL文件 進口zmq.libzmq
    2. 有以下包括在你的設置data_files。 就是這樣

      設置( #... 選項= { 'py2exe':{ '包括':'zmq.backend。用Cython '] } }, data_files = [ (' LIB」,(zmq.libzmq。文件,)) ] )