我是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:
答案 0 :(得分:3)
在64位机器上重新安装python 2.7后,我强制重新安装了wheel和paramiko
pip install --upgrade --force paramiko
答案 1 :(得分:1)
这意味着您有一个64位操作系统,并且您正在使用32位的程序包。当机器的基本体系结构和安装的软件包不匹配时,会出现此错误。
我尝试了以下程序,效果很好。
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
答案 2 :(得分:0)
我的最终解决方案是卸载python 2.7 32bit和paramiko。然后重新安装python 2.1 64位并重新安装paramiko。这纠正了我的错误。