2013-02-14 4 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 

Может кто-нибудь объяснить, если мне действительно нужно, где найти его или как исключить его ,

Благодарности Мадс

ответ

1

Я не уверен, что это оптимальное решение, но он работал на меня:

  • загрузить pyzmq из http://pypi.python.org/pypi/pyzmq
  • установить яйцо, используя easy_install
  • копию libzmq .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

3

К сожалению, это не очень хороший ответ, но я считаю, что это достойный диагноз.

py2exe wiki не обновляется (по крайней мере, я думаю). Я считаю, что версия 13.0.0 внесла изменения, в которых libzmq.pyd заменяет libzmq.dll. Обычная обработка модулей расширения Py2exe переименовывает это в «zmq.libzmq.pyd», но это приводит к разрыву оконной библиотеки Windows, поскольку (например) zmq.core._device.pyd явно ссылается на libzmq.pyd.

Это мотивирует альтернативное уродливое исправление копирования zmq.libzmq.pyd на libzmq.pyd в папке dist, сгенерированной py2exe. С этим исправлением мой вывод exex exex exe exe работает корректно с ошибками импорта.

10

три шага необходимы, чтобы сделать его работу:

  • Исключить libzmq.pyd из DLL'и с dll_excludes опцией. Это позволяет избежать ошибок «missing pyzmq.pyd».
  • Исключить zmq.libzmq (то же самое) из модулей с excludes. Это пропускает обычный .pyd renamind и проксирование, которое делает py2exe.
  • Добавить zmq.backend.cython с опцией includes, потому что py2exe не может видеть это через код выбора кода pyzmq. Если вы не сделаете этого, вы получите ошибки «no module named 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 - но я-м-LZY.

  1. Копия libzmq.pyd из C: \ python27 \ Lib \ сайты-пакеты \ zmq в C: \ python27 \ DLL, импорт zmq.libzmq
  2. имеют следующие включает и data_files в вашей установке. Вот это

    установки ( # ... опции = { 'py2exe': { 'включает в себя': [ 'zmq.backend.Cython '] }} , data_files = [ (' Lib», (zmq.libzmq. файл,)) ] )

Смежные вопросы