Странная трассировка импорта CPython 2.7 - не ошибка ImportError

Я добавил каталоги в свой sys.path сотни раз, прежде чем импортировать из них, и знаю, чего от этого ожидать. Признаюсь, у меня нет большого опыта в упаковке или яйце.

Тем не менее, у меня есть несколько специальных (по-видимому) каталог, который не работает.

Трассировка, когда я пытаюсь ее импортировать, выглядит так:

Traceback (most recent call last):
  File "t", line 17, in <module>
    from InfinityUnixHost.activities.ICWrap import ICWrap
  File "/home/dstromberg/PycharmProjects/infinity_PY/src/InfinityUnixHost/activities/ICWrap.py",
line 8, in <module>
    from InfinityUnixHost.IPGlobal import DB_POOL
  File "/home/dstromberg/PycharmProjects/infinity_PY/src/InfinityUnixHost/IPGlobal.py",
line 12, in <module>
    INTERNAL_VERSION = pkg_resources.require("InfinityUnixHost")[0].version
  File "/home/dstromberg/virtualenvs/dev/local/lib/python2.7/site-packages/pkg_resources/__init__.py",
line 941, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/home/dstromberg/virtualenvs/dev/local/lib/python2.7/site-packages/pkg_resources/__init__.py",
line 828, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'InfinityUnixHost'
distribution was not found and is required by the application

И крошечная тестовая программа, которая выдает эту ошибку:

#!/usr/bin/env python

import sys
import os.path

sys.path.insert(0, os.path.abspath('src'))
sys.path.insert(0, os.path.abspath('eggs/InfinityCore-6-py2.7.egg'))
#for directory in sys.path:
#       # print(directory)
#       if \
#                       os.path.exists(os.path.join(directory,
'InfinityUnixHost')) and \
#                       os.path.exists(os.path.join(directory,
'InfinityUnixHost/activities')) and \
#                       os.path.exists(os.path.join(directory,
'InfinityUnixHost/activities/ICWrap.py')):
#               print('found in %s' % directory)

# from InfinityUnixHost.activities.ICWrap import ICWrap
from InfinityUnixHost.activities.ICWrap import ICWrap
dummy = ICWrap

Кстати, закомментированный цикл for может видеть файл, который я пытаюсь импортировать (когда он не закомментирован), но, тем не менее, механизм импорта не загружает модуль.

К сожалению, я не могу поделиться подробностями о внутренностях InfinityUnixHost, но, возможно, мы сможем обсудить это при необходимости.

Кто-нибудь знает, почему импорт не удается таким странным образом? Это даже не ошибка ImportError!

Кстати, я запускал тестовый код до тех пор, пока он не стал прямым, и я увидел, что он открыл ICWrap.py, но, похоже, все еще возникают проблемы с загрузкой ICWrap.py в интерпретатор.

Спасибо!

1 ответ

Оказывается, это потому, что какой-то код уровня модуля делал что-то, что отслеживалось, поэтому казалось, что у механизма импорта возникли проблемы.

Другие вопросы по тегам