Я смущен о приоритете при импорте модулей и о том, как его изменить.Согласованность приоритетов импорта?
текущий каталог действительно содержит:
l10n/__init__.py
l10n/moneyfmt.py
другой каталог (разные, то тока) с дополнительным пакетом действительно содержит:
/opt/l10n/__init__.py
/opt/l10n/utils.py
Сейчас работает питон интерактивный интерпретатор:
>>> import sys
>>> sys.path
['', '/usr/lib/python27.zip', '/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload',
'/usr/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages/PIL',
'/usr/lib/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages/setuptools-0.6c11.egg-info']
>>> import l10n.utils
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named utils # CORRECT, NOT IN PATH YET
>>> sys.path.insert(0, '/opt')
>>> sys.path
['/opt', '', '/usr/lib/python27.zip', '/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/PIL',
'/usr/lib/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages/setuptools-0.6c11.egg-info']
>>> import l10n.utils
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named utils # WHY IT CAN NOT FIND THE MODULE?
Почему он не может найти пакет с модулем l10n.utils после того, как я сделал предварительный патч h к пути поиска в sys.path? Поддерживает ли текущий каталог ? Можно ли это изменить?
Ничего себе, если я опускаю первую попытку импорта, он действительно загружает модуль 'l10n.utils'! Есть ли какая-либо документация, касающаяся кэширования импорта? Может ли это как-то очиститься позже? –
@DavidUnric: есть, см. Http://docs.python.org/2/reference/simple_stmts.html#the-import-statement и http://docs.python.org/2/library/sys.html# sys.modules – NPE
Спасибо за быстрый ответ. Все еще находите это немного удивительным поведением. –