Python 如何从wheel文件导入pyzmq?

Python 如何从wheel文件导入pyzmq?,python,python-import,failed-installation,pyzmq,python-wheel,Python,Python Import,Failed Installation,Pyzmq,Python Wheel,我需要从pyzmq.whl文件导入zmq,但是我得到了一个导入错误。由于限制,我无法执行pip安装 我已经从pypi.org下载了“pyzmq-18.1.0-cp37-cp37m-manylinux1_x86_64.whl”文件(这是Python 3.7.4的正确版本吗?),并在我当前的目录中将其重命名为pyzmq.whl 导入系统 sys.path.append(“./pyzmq.whl”) 导入zmq 我收到以下错误消息: File "import_zmq.py", line 3, i

我需要从pyzmq.whl文件导入zmq,但是我得到了一个导入错误。由于限制,我无法执行
pip安装

我已经从pypi.org下载了“pyzmq-18.1.0-cp37-cp37m-manylinux1_x86_64.whl”文件(这是Python 3.7.4的正确版本吗?),并在我当前的目录中将其重命名为pyzmq.whl

导入系统 sys.path.append(“./pyzmq.whl”) 导入zmq 我收到以下错误消息:

  File "import_zmq.py", line 3, in <module>
    import zmq
  File "pyzmq.whl/zmq/__init__.py", line 47, in <module>
  File "pyzmq.whl/zmq/backend/__init__.py", line 40, in <module>
  File "pyzmq.whl/zmq/utils/sixcerpt.py", line 34, in reraise
  File "pyzmq.whl/zmq/backend/__init__.py", line 27, in <module>
  File "pyzmq.whl/zmq/backend/select.py", line 28, in select_backend
  File "pyzmq.whl/zmq/backend/cython/__init__.py", line 6, in <module>
ImportError: cannot import name 'constants' from 'zmq.backend.cython' (pyzmq.whl/zmq/backend/cython/__init__.py)
文件“import_zmq.py”,第3行,在
导入zmq
文件“pyzmq.whl/zmq/_init__.py”,第47行,在
文件“pyzmq.whl/zmq/backend/_init__.py”,第40行,在
文件“pyzmq.whl/zmq/utils/sixerpt.py”,第34行,在reraise中
文件“pyzmq.whl/zmq/backend/_init__.py”,第27行,在
文件“pyzmq.whl/zmq/backend/select.py”,第28行,在select\u backend中
文件“pyzmq.whl/zmq/backend/cython/_init__.py”,第6行,在
ImportError:无法从'zmq.backend.cython'(pyzmq.whl/zmq/backend/cython/_init_;u.py)导入名称'constants'
指出这是一个文件夹结构问题,但我尚未提取控制盘文件,因此我不确定如何修复此错误

编辑:不管怎样,可能无法将pyzmq作为控制盘文件导入,因为它依赖于CPython。看

…CPython不支持从zip存档导入C扩展(因为任何平台上的动态加载机制都不直接支持这样做)


无法将pyzmq作为控制盘文件导入,因为它依赖于CPython

CPython不支持从zip存档导入C扩展(因为任何平台上的动态加载机制都不直接支持这样做)

好的,我现在是这样做的。我基本上是以编程方式使用pip安装。另外,更改whl文件的名称会导致问题,所以请保留原始名称

import subprocess, sys
try:
 import zmq
except ImportError:
 src_path = "path/to/folder/having/whl"
 pyzmq = "pyzmq-18.1.0-cp37-cp37m-manylinux1_x86_64.whl"
 target_path = "path/where/you/want/it/installed"
 install_cmd = sys.executable + " -m pip install --target=" + target_path + " " + src_path + pyzmq
 subprocess.call(install_cmd,shell=True) 
finally:
 #Sometimes "import zmq" won't work here, so do this:
 import importlib
 zmq = importlib.import_module("zmq")

try块确保如果已经安装了zmq,我们不会重做此安装(假设此代码重复运行)。它适用于我的特定用例,希望这对其他人有所帮助。

您可以在没有约束的地方安装
.whl
文件。然后将这些文件复制粘贴到您的程序运行文件夹中。您现在可以像python中的正常导入一样导入。这只是一种解决方法(不推荐)如果你还没有解决办法的话。是的,我忘了提,我现在一直在用它作为解决办法。