2016-10-27 7 views
0

Моя проблема очень похожа на этот вопрос уже спросил: No handlers could be found for logger paramikoскомпилированный сценарий Python «Нет обработчиков не может быть найдено для регистратора„paramiko.transport“

Разница заключается в том, что мой сценарий будет работать прекрасно в интерпретатора но будет сбрасывать указанную ошибку при компиляции с PyInstaller в exe-файл. Я пробовал пару разных обработчиков ведения журнала без везения, и я снимаю для автономного исполняемого файла, который я могу запускать из любой системы Windows. для справки:

from netmiko import ConnectHandler 
net_connect = ConnectHandler(device_type='hp_procurve', ip='10.1.2.20', username='myusername', password='mypassword') 
output = net_connect.send_command("show run") 
print output 
net_connect.disconnect() 
raw_input("Press enter to exit...") 

Спасибо за помощь!

+0

Пробовали ли вы решение из этой ссылки, используя 'paramiko.util .log_to_file'? –

ответ

1

Добавление обработчика консольного (например) paramiko.transport:

paramiko_logger = logging.getLogger('paramiko.transport') 
if not paramiko_logger.handlers: 
    console_handler = logging.StreamHandler() 
    console_handler.setFormatter(
     logging.Formatter('%(asctime)s | %(levelname)-8s| PARAMIKO: ' 
          '%(lineno)[email protected]%(module)-10s| %(message)s') 
     ) 
    paramiko_logger.addHandler(console_handler) 
+0

Отлично, спасибо fernandezcuesta. Это исправило мою ошибку! – devdacool

0

Для тех, кто работает через это, вот мой полный сценарий Python для SSH в коммутатор HP ProCurve и печать выходных данных команда show run. Я столкнулся с другой ошибкой, когда криптографический модуль не будет корректно взаимодействовать с PyInstaller после того, как указанная ошибка в этом сообщении была решена. Эта ссылка предусматривает, что решение: https://github.com/pyinstaller/pyinstaller/issues/2013

def patch_crypto_be_discovery(): 
    from cryptography.hazmat import backends 
    try: 
     from cryptography.hazmat.backends.commoncrypto.backend import backend as be_cc 
    except ImportError: 
     be_cc = None 
    try: 
     from cryptography.hazmat.backends.openssl.backend import backend as be_ossl 
    except ImportError: 
     be_ossl = None 
    backends._available_backends_list = [ 
     be for be in (be_cc, be_ossl) if be is not None 
] 
import logging 
paramiko_logger = logging.getLogger('paramiko.transport') 
if not paramiko_logger.handlers: 
    console_handler = logging.StreamHandler() 
    console_handler.setFormatter(
     logging.Formatter('%(asctime)s | %(levelname)-8s| PARAMIKO: ' 
         '%(lineno)[email protected]%(module)-10s| %(message)s') 
    ) 
paramiko_logger.addHandler(console_handler) 
from netmiko import ConnectHandler 
net_connect = ConnectHandler(device_type='hp_procurve', ip='10.1.2.20', username='myusername', password='mypassword') 
output = net_connect.send_command("show run") 
print output 
net_connect.disconnect() 
raw_input("Press enter to exit...") 

мне нужно запустить эту команду для компиляции сценария в exe:

pyinstaller --onefile --hidden-import cryptography.hazmat.backends.openssl --hidden-import cffi HP-ProCurve-ShowRun.py