Невозможно импортировать logging.handlers внутри носового теста.

Я пишу базовый тест с носом для вызова одной функции из оболочки ведения журнала, но как только я обнаружил тест, я начал получать стандартные ошибки импорта модуля библиотеки.

Это код, для которого я пытаюсь написать несколько тестов, он находится в производстве и не менялся в течение длительного времени, поэтому я уверен, что что-то не так, когда я пытаюсь использовать нос.

  Failure: ImportError (cannot import name WatchedFileHandler) ... ERROR

  ======================================================================
  ERROR: Failure: ImportError (cannot import name WatchedFileHandler)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/opt/local/lib/python2.4/site-packages/nose/loader.py", line 389, in loadTestsFromName
      module = self.importer.importFromPath(
    File "/opt/local/lib/python2.4/site-packages/nose/importer.py", line 39, in importFromPath
      return self.importFromDir(dir_path, fqname)
    File "/opt/local/lib/python2.4/site-packages/nose/importer.py", line 86, in importFromDir
      mod = load_module(part_fqname, fh, filename, desc)
    File "/Users/jolson/project/qworker/tests/unit/test_qscript_log.py", line 2, in ?
      from logging.handlers import WatchedFileHandler, TimedRotatingFileHandler
  ImportError: cannot import name WatchedFileHandler

Что может быть причиной этого?

Обновление: я упростил его до следующего, и тест по-прежнему не работает, но за пределами носа все работает так, как ожидалось.

from logging.handlers import WatchedFileHandler, TimedRotatingFileHandler

def test_INFO():
    assert 0 == 0

** Обновление 2 ** Я проверил свои пути. Внутри носовых тестов мой путь выглядит так.

['/Users/jolson/project/qworker/tests', '/Users/jolson/project/qworker',
'/opt/local/bin', '/opt/local/lib/python24.zip', '/opt/local/lib/python2.4', 
'/opt/local/lib/python2.4/plat-darwin', '/opt/local/lib/python2.4/plat-mac', 
'/opt/local/lib/python2.4/plat-mac/lib-scriptpackages', '/opt/local/lib/python2.4/lib-tk',
 '/opt/local/lib/python2.4/site-packages/readline', '/opt/local/lib/python2.4/lib-dynload', 
'/opt/local/lib/python2.4/site-packages', '/opt/local/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg-info']

но мой обычный путь внутри интерпретатора python

['', '/usr/local/bin', '/Library/Python/2.7/site-packages/pip-1.2.1-py2.7.egg', 
'/Library/Python/2.7/site-packages/virtualenv-1.8.2-py2.7.egg', 
'/Library/Python/2.7/site-packages/virtualenvwrapper-3.6-py2.7.egg', 
'/Library/Python/2.7/site-packages/stevedore-0.3-py2.7.egg', 
'/Library/Python/2.7/site-packages/virtualenv_clone-0.2.4-py2.7.egg',
 '/Library/Python/2.7/site-packages/distribute-0.6.28-py2.7.egg', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', 
'/Library/Python/2.7/site-packages', '/Library/Python/2.7/site-packages/setuptools-0.6c11-py2.7.egg-info', 
'/Library/Python/2.7/site-packages/IPython/extensions']

Я бегу nosetests-2.4 tests

у которого есть один файл в tests/unit/test_log.py


person Joshua Olson    schedule 13.09.2012    source источник
comment
по какой команде ты бегаешь носом? (так что я могу сделать то же самое)   -  person User    schedule 14.09.2012
comment
взгляните на logging.__file__ и добавьте базовое имя к пути, чтобы он работал.   -  person User    schedule 14.09.2012


Ответы (1)


Моя ОС по умолчанию использовала nosetests-2.4, который использует python 2.4, но весь наш код - python 2.7, поэтому путь был неверным, и ничего не работало, а logging.handlers был просто первым пакетом, отсутствующим в 2.4 libs, который был необходим.

person Joshua Olson    schedule 13.09.2012
comment
Я совершенно сбит с толку, почему это было сделано, хотя. - person Joshua Olson; 14.09.2012
comment
Как вы на самом деле исправить это? Добавить свою среду в путь python? - person pip; 20.12.2014
comment
Я исправил это, убедившись, что используется версия Nosetest 2.7. Я думаю, что в этом случае я просто удалил Nosetest-2.4. - person Joshua Olson; 23.12.2014