sys.path 一定是带paramiko的目录名列表?

sys.path must be a list of directory names with paramiko?

我正在使用 paramiko 使 ssh 连接到我的 IP 地址,然后我在循环中执行某些命令。以前这工作正常但现在这个抛出异常

logging.basicConfig()
paramiko_logger = logging.getLogger("paramiko.transport")
paramiko_logger.disabled = True
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ipaddress = '169.254.30.39'
ssh.connect(ipaddress, port=22, username='root', password='')

Traceback (most recent call last):
  File ".\Audio_connect.py", line 100, in <module>
    Audio_connect_class('43210')
  File ".\Audio_connect.py", line 10, in __init__
    self.getreorderedzip(reorder)
  File ".\Audio_connect.py", line 34, in getreorderedzip
    self.execute(zip(newinput,newtestcasenames))
  File ".\Audio_connect.py", line 44, in execute
    ssh.connect(ipaddress, port=22, username='root', password='')
  File "C:\Python27\lib\site-packages\paramiko\client.py", line 392, in connect
    t.start_client(timeout=timeout)
  File "C:\Python27\lib\site-packages\paramiko\transport.py", line 545, in start_client
    raise e
RuntimeError: sys.path must be a list of directory names

当我打印 sys.path 时,这会打印我的文件所在的文件夹位置,而我知道 sys.path 通常会打印所有依赖文件夹的列表。我几乎尝试了所有方法,并通过了关于 Whosebug 的已经询问过的查询,但没有任何帮助。

*****编辑******** 工作代码

import paramiko, os, sys, time
import Audio_connect_Input
from LogFille import writelogfile

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('169.254.30.39', port=22, username='root', password='')

channel = ssh.invoke_shell()

channel_data = str()
MainConnectionId= str()
isError = False

input =[
       Audio_connect_Input.A,
        Audio_connect_Input.B,
        Audio_connect_Input.C,
        Audio_connect_Input.D,
        Audio_connect_Input.E
        ]
testcaseNames = [
                'A',
                'B',
                'C',
                'D',
                'E'
                ]

key = str()
elem = str()

#while True:
for (x,name) in zip(input,testcaseNames):
 .... Execution steps...

sys.path result 
C:\XYZ_CLI\cli_testexecutions
E:\python27
C:\WINDOWS\SYSTEM32\python27.zip
E:\Python27\DLLs
E:\Python27\lib
E:\Python27\lib\plat-win
E:\Python27\lib\lib-tk
E:\Python27\lib\site-packages

******非工作代码******

import paramiko, os, sys, time
from LogFille import writelogfile
import logging
import Audio_connect_Input

class Audio_connect_class(object):
    def __init__(self, reorder):
        print '__init___ ', sys.path
        self.getreorderedzip(reorder)

    def getreorderedzip(self, reorder):
        print ''

        input =[
           Audio_connect_Input.A,
            Audio_connect_Input.B,
            Audio_connect_Input.C,
            Audio_connect_Input.D,
            Audio_connect_Input.E
            ]
        testcaseNames = [
                    'A',
                    'B',
                    'C',
                    'D',
                    'E'
                    ]

        newinput = []
        newtestcasenames = []
        for idx in reorder:
            newinput.append(input[int(idx)])
            newtestcasenames.append(testcaseNames[int(idx)])
        self.execute(zip(newinput,newtestcasenames))

    def execute(self, received_zip):
        logging.basicConfig()
        paramiko_logger = logging.getLogger("paramiko.transport")
        paramiko_logger.disabled = True
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

        ipaddress = '169.254.30.39'
        ssh.connect(ipaddress, port=22, username='root', password='')

        channel = ssh.invoke_shell()

        channel_data = str()
        MainConnectionId= str()
        isError = False

        key = str()
        elem = str()

        #while True:
        for (x,name) in received_zip:
            ****Execution Steps*****

sys.path result 
C:\XYZ_CLI\cli_testexecution_as_class

两个文件名相同,但保存在不同的文件夹中。

好吧,在花了很多时间解决这个问题之后,我发现 from LogFille import writelogfile 正在内部执行 os.sys.path = os.getcwd() 正在改变 sys.path 使 paramiko 处理异常在运行时访问库。