Отслеживания питоньячего кода привело к удивительном открытию. В процессы установки glance чуда по мануалам мы получили, в частности два питоньячих модуля в основной системе:
# diff -u /usr/lib64/python2.7/argparse.py /usr/lib/python2.7/site-packages/argparse.py --- /usr/lib64/python2.7/argparse.py 2016-07-19 23:35:59.000000000 +0300 +++ /usr/lib/python2.7/site-packages/argparse.py 2017-02-13 19:03:46.819989914 +0300 @@ -61,7 +61,7 @@ still considered an implementation detail.) """ -__version__ = '1.1' +__version__ = '1.2.1'
Бл…. разработчики…
Ну что за зверинец это питон …
# rpm -qf /usr/lib64/python2.7/argparse.py /usr/lib/python2.7/site-packages/argparse.py python-base-2.7.12-3.1.x86_64 python-argparse-1.2.1-16.1.4.noarch
Соответственно и модуль питоньячи ищет как наткнется … или как подсунут. А поскольку весь OS это питоньяче творение, то и нам заботить чтобы это все взлетало как надо, если уж не досуг ставить все ручками из сырцов в оотдельные хомячные директории сервисов.
Здесь для тех кто не помнит что ищеи и где змейка: https://docs.python.org/3/tutorial/modules.html#the-module-search-path
А поэтому есть смысл сделать так, для побеждания питонячины:
storage:/ # cat /etc/bash.bashrc.local PYTHONPATH=. PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.7/site-packages PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.7/site-packages/PIL PYTHONPATH=$PYTHONPATH:/usr/local/lib64/python2.7/site-packages PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7/site-packages PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.7/plat-linux2 PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.7/lib-tk PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.7/lib-old PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.7/lib-dynload PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.7 PYTHONPATH=$PYTHONPATH:/usr/lib/python27.zip export PYTHONPATH
Дальнейшие копания в питоньячих кишках стека по поводу сабжа всеже привели в верхушку древнего модуля – oslo_config.cfg. А имено в его криворукое пользование модулем logging.
import logging ... LOG = logging.getLogger(__name__)
Созданный обьект LOG – инвалид питониста обкурыша ))))))
А именно следующее…
Эта ошибка порождается при использовать модуля ведения журнала logging, когда он не был настроен посылать сообщение в терминал или куда ли еще. И конечно говно код не думает проверять, настроен модуль или нет.
Так как же мы это исправить? Например так:
import logging ... logging.basicConfig(filename='/dev/null') LOG = logging.getLogger(__name__)
PS. на тему:
http://excid3.com/blog/no-handlers-could-be-found-for-logger
https://atlee.ca/blog/posts/diving-into-python-logging.html
http://pythonsweetness.tumblr.com/post/67394619015/use-of-logging-package-from-within-a-library