【问题标题】:SFTP Paramiko (Python) - Import Error DLL Load Failed - Not a valid Win32 ApplicationSFTP Paramiko (Python) - 导入错误 DLL 加载失败 - 不是有效的 Win32 应用程序
【发布时间】:2017-03-20 13:02:48
【问题描述】:

我是一名新手 Python 程序员。我正在使用一个简单的 paramiko 脚本来下载 SFTP 文件。它最近开始抛出以下错误: ImportError:DLL 加载失败:%1 不是有效的 Win32 应用程序。它工作了几个月没有问题。我在 Windows 7 64 位上使用 paramiko 2.1.2、密码学 1.8.1 和 Python 2.7.12 32 位。

>>> t = paramiko.Transport((hostname, port))
>>> t.connect(username=username, password=password)
No handlers could be found for logger "paramiko.transport"
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "C:\Python27\lib\site-packages\paramiko\transport.py", line 1073, in  connect
      self.start_client()
   File "C:\Python27\lib\site-packages\paramiko\transport.py", line 493, in start_client
      raise e
   ImportError: DLL load failed: %1 is not a valid Win32 application.

我已尝试卸载并重新安装。回滚到以前的版本,但没有解决此错误。我很感激有人可以提供任何帮助。

日志文件:

    DEB [20170320-10:23:43.359] thr=1   paramiko.transport: starting thread (client mode): 0x29f2250L
    DEB [20170320-10:23:43.359] thr=1   paramiko.transport: Local version/idstring: SSH-2.0-paramiko_2.1.2
    DEB [20170320-10:23:43.407] thr=1   paramiko.transport: Remote version/idstring: SSH-2.0-WS_FTP-SSH_7.7
    INF [20170320-10:23:43.407] thr=1   paramiko.transport: Connected (version 2.0, client WS_FTP-SSH_7.7)
    DEB [20170320-10:23:43.407] thr=1   paramiko.transport: kex algos:[u'diffie-hellman-group1-sha1', u'diffie-hellman-group14-sha1'] server key:[u'ssh-dss', u'ssh-rsa'] client encrypt:[u'aes256-ctr', u'aes192-ctr', u'aes128-ctr', u'3des-cbc'] server encrypt:[u'aes256-ctr', u'aes192-ctr', u'aes128-ctr', u'3des-cbc'] client mac:[u'hmac-sha1', u'hmac-sha1-96'] server mac:[u'hmac-sha1', u'hmac-sha1-96'] client compress:[u'none'] server compress:[u'none'] client lang:[u''] server lang:[u''] kex follows?False
    DEB [20170320-10:23:43.407] thr=1   paramiko.transport: Kex agreed: diffie-hellman-group1-sha1
    DEB [20170320-10:23:43.407] thr=1   paramiko.transport: Cipher agreed: aes128-ctr
    DEB [20170320-10:23:43.407] thr=1   paramiko.transport: MAC agreed: hmac-sha1-96
    DEB [20170320-10:23:43.407] thr=1   paramiko.transport: Compression agreed: none
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport: Unknown exception: DLL load failed: %1 is not a valid Win32 application.
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport: Traceback (most recent call last):
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\paramiko\transport.py", line 1783, in run
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     self.kex_engine.parse_next(ptype, m)
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\paramiko\kex_group1.py", line 75, in parse_next
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     return self._parse_kexdh_reply(m)
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\paramiko\kex_group1.py", line 111, in _parse_kexdh_reply
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     self.transport._verify_key(host_key, sig)
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\paramiko\transport.py", line 1628, in _verify_key
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     key = self._key_info[self.host_key_type](Message(host_key))
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\paramiko\rsakey.py", line 59, in __init__
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     ).public_key(default_backend())
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\cryptography\hazmat\backends\__init__.py", line 74, in default_backend
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     _default_backend = MultiBackend(_available_backends())
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\cryptography\hazmat\backends\__init__.py", line 31, in _available_backends
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     "cryptography.backends"
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\pkg_resources\__init__.py", line 2308, in resolve
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     module = __import__(self.module_name, fromlist=['__name__'], level=0)
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\cryptography\hazmat\backends\openssl\__init__.py", line 7, in <module>
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     from cryptography.hazmat.backends.openssl.backend import backend
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 16, in <module>
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     from cryptography import utils, x509
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\cryptography\x509\__init__.py", line 7, in <module>
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     from cryptography.x509.base import (
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\cryptography\x509\base.py", line 16, in <module>
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     from cryptography.x509.extensions import Extension, ExtensionType
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\cryptography\x509\extensions.py", line 19, in <module>
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     from cryptography.hazmat.primitives import constant_time, serialization
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:   File "C:\Python27\lib\site-packages\cryptography\hazmat\primitives\constant_time.py", line 9, in <module>
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport:     from cryptography.hazmat.bindings._constant_time import lib
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport: ImportError: DLL load failed: %1 is not a valid Win32 application.
    ERR [20170320-10:23:43.780] thr=1   paramiko.transport: 

【问题讨论】:

    标签: python-2.7 sftp paramiko


    【解决方案1】:

    在 64 位机器上重新安装 python 2.7 后,我强制重新安装 wheel 和 paramiko

    pip install --upgrade --force paramiko
    

    【讨论】:

    • 我以前的不幸事件混合安装了 64 位和 32 位库。因此,即使它被列为已安装,不匹配也会导致失败。上面的答案为我清除了它。
    【解决方案2】:

    这意味着您拥有 64 位操作系统并且您使用的是 32 位软件包。当机器的基本架构和安装的软件包不匹配时,就会出现此错误。

    1. 安装 Microsoft Visual C++ compiler for python
    2. 点安装轮子
    3. pip install paramiko

    我试过下面的程序,效果很好。

    import paramiko
    
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('192.168.5.7', username='user', password='mysecretkeya')
    uptime = ssh.exec_command("uptime")
    print uptime
    

    【讨论】:

    • 谢谢瓦拉德。我安装了 64 位 Pycrpto,但仍然收到相同的错误。
    • 你可以试试 pip install wheel pip uninstall pycrypto paramiko pip install paramiko this 并确认
    • 卸载pycrypto和paramiko后同样的错误,然后重新安装paramiko。
    • 你的系统的拱门是什么。 32 位或 64 位。
    • Windows 7 64 位
    【解决方案3】:

    我的最终解决方案是卸载 python 2.7 32bit 和 paramiko。然后重新安装python 2.1 64位并重新安装paramiko。这更正了我的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 2012-03-05
      • 2022-08-14
      • 1970-01-01
      相关资源
      最近更新 更多