pip:理解缺失库的转储

1 投票
1 回答
1065 浏览
提问于 2025-04-18 06:29

我正在尝试在Windows 7上安装HoneyProxy。我已经安装了Python 2.7和pip。它提示我:

安装所有依赖项:使用命令 pip install pyOpenSSL pyasn1 Twisted Autobahn

Windows用户:需要手动安装pyOpenSSL和Twisted的二进制文件。

这是我pip的安装列表:

astropy (0.3.1)
autobahn (0.8.8)
beautifulsoup4 (4.3.2)
cffi (0.8.2)
cryptography (0.4)
httplib2 (0.8)
matplotlib (1.3.1)
numpy (1.8.1)
oauth2 (1.5.211)
oauthlib (0.6.0)
pip (1.5.4)
pyasn1 (0.1.7)
pycparser (2.10)
pyopenssl (0.14)
pyparsing (2.0.1)
python-dateutil (2.2)
pytz (2014.2)
requests (2.2.1)
requests-oauthlib (0.4.0)
setuptools (3.4.4)
simplejson (3.3.2)
six (1.6.1)
Twisted (14.0.0)
TwitterAPI (2.1.13)
urwid (1.2.1)
wikipedia (1.1dev)
wsgiref (0.1.2)
zope.interface (4.1.1)

我已经手动安装了pyOpenSSLTwisted。当我尝试运行python honeyproxy.py时,出现了以下信息:

D:\arbol\documentos\phyton\honeyproxy>python honeyproxy.py
Traceback (most recent call last):
  File "honeyproxy.py", line 21, in <module>
    from twisted.web.server import Site
  File "C:\Python27\lib\site-packages\twisted\web\server.py", line 35, in <module>
    from twisted.web import iweb, http, html
  File "C:\Python27\lib\site-packages\twisted\web\http.py", line 95, in <module>
    from twisted.internet import interfaces, reactor, protocol, address
  File "C:\Python27\lib\site-packages\twisted\internet\reactor.py", line 38, in <module>
    from twisted.internet import default
  File "C:\Python27\lib\site-packages\twisted\internet\default.py", line 56, in <module>
    install = _getInstallFunction(platform)
  File "C:\Python27\lib\site-packages\twisted\internet\default.py", line 50, in _getInstallFunction
    from twisted.internet.selectreactor import install
  File "C:\Python27\lib\site-packages\twisted\internet\selectreactor.py", line 18, in <module>
    from twisted.internet import posixbase
  File "C:\Python27\lib\site-packages\twisted\internet\posixbase.py", line 24, in <module>
    from twisted.internet import error, udp, tcp
  File "C:\Python27\lib\site-packages\twisted\internet\tcp.py", line 29, in <module>
    from twisted.internet._newtls import (
  File "C:\Python27\lib\site-packages\twisted\internet\_newtls.py", line 21, in <module>
    from twisted.protocols.tls import TLSMemoryBIOFactory, TLSMemoryBIOProtocol
  File "C:\Python27\lib\site-packages\twisted\protocols\tls.py", line 41, in <module>
    from OpenSSL.SSL import Error, ZeroReturnError, WantReadError
  File "build\bdist.win32\egg\OpenSSL\__init__.py", line 8, in <module>
  File "build\bdist.win32\egg\OpenSSL\rand.py", line 11, in <module>
  File "build\bdist.win32\egg\OpenSSL\_util.py", line 4, in <module>
  File "C:\Python27\lib\site-packages\cryptography\hazmat\bindings\openssl\binding.py", line 87, in __init__
    self._ensure_ffi_initialized()
  File "C:\Python27\lib\site-packages\cryptography\hazmat\bindings\openssl\binding.py", line 106, in _ensure_ffi_initial
ized
    libraries=libraries,
  File "C:\Python27\lib\site-packages\cryptography\hazmat\bindings\utils.py", line 80, in build_ffi
    extra_link_args=extra_link_args,
  File "C:\Python27\lib\site-packages\cffi\api.py", line 341, in verify
    lib = self.verifier.load_library()
  File "C:\Python27\lib\site-packages\cffi\verifier.py", line 75, in load_library
    return self._load_library()
  File "C:\Python27\lib\site-packages\cffi\verifier.py", line 151, in _load_library
    return self._vengine.load_library()
  File "C:\Python27\lib\site-packages\cffi\vengine_cpy.py", line 138, in load_library
    raise ffiplatform.VerificationError(error)
cffi.ffiplatform.VerificationError: importing 'C:\\Python27\\lib\\site-packages\\cryptography\\_Cryptography_cffi_444d73
97xa22f8491.pyd': DLL load failed: El sistema operativo no puede ejecutar %1.

听起来像是cffi或cryptography库出问题了,我不确定是哪一个。OpenSSL和Twisted也有问题吗?

更新:最后,我不得不安装:

1 个回答

1

根据这个堆栈信息,Twisted 正在尝试初始化它的 TCP 层,而这个过程又调用了 OpenSSL,最终是调用了 cffi 代码。cffi 是一个连接 Python 和 C 代码的桥梁。

它试图加载一个文件,路径是 C:\Python27\lib\site-packages\cryptography\_Cryptography_cffi_444d7397xa22f8491.pyd(这个文件其实是一个可以在 Python 中使用的 DLL),但是由于某种错误,它无法加载这个文件。(看起来错误信息中有一个占位符没有被替换,这很可惜,因为那可能会提供更多的信息——除此之外,错误信息只是说操作系统无法加载这个文件,这并没有给出太多诊断信息,因为这可能是由很多不同原因造成的)。

首先要检查的是这个文件在你的电脑上是否真的存在。如果不存在,可能是 cffi 的安装没有成功。如果文件存在,但还是无法加载,那可能是 Windows 事件日志中的某个视图能提供更多信息,帮助你了解为什么 Windows 无法加载这个 pyd/DLL 文件。

** 编辑 **

这可能是 32 位和 64 位的问题。可以查看这个常见问题解答: https://cryptography.io/en/latest/faq/#when-i-try-to-use-cryptography-on-windows-i-get-a-cffi-ffiplatform-verificationerror

我建议尝试安装 64 位版本(假设你在使用 Win64)。

撰写回答