Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Windows和ZMQ上的CX_冻结导入错误_Python_Cx Freeze_Pyzmq - Fatal编程技术网

Python Windows和ZMQ上的CX_冻结导入错误

Python Windows和ZMQ上的CX_冻结导入错误,python,cx-freeze,pyzmq,Python,Cx Freeze,Pyzmq,我有一个使用ZMQ的python程序。我想冻结它,这样每个人都可以将其用作可执行文件。这是我的setup.py import sys from cx_Freeze import setup, Executable includes = ["sip", "re", "zmq", "PyQt4.QtCore", "atexit", "zmq.utils.strtypes", "zmq.utils.jsonapi", "encodings.hex_codec"] base = None if sy

我有一个使用ZMQ的python程序。我想冻结它,这样每个人都可以将其用作可执行文件。这是我的setup.py

import sys

from cx_Freeze import setup, Executable
includes = ["sip", "re", "zmq", "PyQt4.QtCore", "atexit", "zmq.utils.strtypes", "zmq.utils.jsonapi", "encodings.hex_codec"]

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup (
    name = "prueba",
    version = "0.1",
    description = "Esto es una prueba",
    options = {"build_exe" : {"includes" : includes }},
    executables = [Executable("Cliente.py", base = base)])
当我在Linux上运行此程序时,它工作正常,我的程序运行正常,但当我在Windows上运行此程序时,我在执行.exe文件时会出现以下错误:

from zmq.core import (constants, error, message, context,
File "ExtensionLoader_zmq_core_error.py", line 12, in <module>
ImportError: DLL load failed: The specified module cannot be found
从zmq.core导入(常量、错误、消息、上下文、,
文件“ExtensionLoader\u zmq\u core\u error.py”,第12行,在
ImportError:DLL加载失败:找不到指定的模块
此外,当CX_冻结工作时,我可以注意到以下几行: 缺少模块: ?从zmq.devices.basedevice导入的zmq.core.Context ?从zmq.devices.monitoredqueuedevice导入的zmq.core.FORWARDER ?从zmq.devices.monitoredquedevice导入的zmq.core.QUEUE ?从zmq.devices.monitoredquedevice导入的zmq.core.ZMQError


我已经花了一两个小时试图解决这个问题,似乎它可能与它应该导入的DLL有关,而不是。ZMQ需要工作的某些DLL,但我找不到它是哪一个。

您可能必须显式地将一个或多个模块添加到您的Include中。如果是DLL问题,我通常使用Dependency Walker来解决你可以在这里免费获得:

它偶尔会给我一个假阳性,但总的来说,它几乎总是有帮助的。

通过添加:

['zmq','zmq.utils.garbage','zmq.backend.cython']


到包,然后将
zmq.libzmq.pyd
重命名为
libzmq.pyd

使其工作。我做了以下操作:首先,我在脚本test=list()test=sys.path test.append(“C:\Python27\zeromq-pyzmq-962ca4d\zmq”)选项中添加了以下行:{“build\u exe”:{“includes”:includes,“path”:test}}通过这种方式,我确保它找对了位置,然后我在计算机上的某个地方找到了一个名为zmqlib.dll的文件,并将其复制到zmq文件夹中,然后它开始工作。我将对此进行查看,但我在我的评论中写道如何修复这是一篇3年前的文章。该项目已关闭,因此我没有任何方法对其进行测试。Y你有点晚了:/