Я пытаюсь работать над средой dev, но я нахожу проблемы в том, что в python, похоже, используются модули из каталога site-packages. Я хочу, чтобы он использовал модули из моего каталога dev.Проблема пути поиска модуля Python
sys.path возвращает кучу директорий, как этот
['', '/usr/lib/python26.zip', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/site-packages' etc
Это хорошо, он использует текущую директорию в качестве первого места поиска (по крайней мере, это то, как я понимаю, что это будет).
Теперь, если я создаю файл с именем command.py в текущем каталоге, все работает так, как я ожидал бы.
>>> import commands
>>> commands.__file__
'commands.pyc'
Затем я выхожу из оболочки python и запускаю другой. Затем я делаю это.
>>> import foo.bar.commands
Теперь, что я ожидал, что это нужно сделать, это пойти вниз из текущего каталога ./foo/bar/ и получить мне модуль команд оттуда. Что я получаю, хотя это
>>> foo.bar.commands.__file__
'/usr/lib/python2.6/site-packages/foo/bar/commands.pyc'
Даже если от моего текущего каталога есть ./foo/bar/commands.py
Использование imp.find_module() и imp.load_module() я могу загрузить локальный модуль. Что на самом деле интересно (хотя я не знаю, что это значит) последняя строка, которая печатается в этой последовательности
>>> import foo.bar.commands
>>> foo.bar.commands.__file__
'/usr/lib/python2.6/site-packages/foo/bar/commands.pyc'
>>> foo.bar.__file__
'/usr/lib/python2.6/site-packages/foo/bar/__int__.pyc'
>>> foo.__file__
'./foo/__init__.pyc'
Так что, если он может найти Foo/инициализации .pyc в локальной директории почему он не может найти другие файлы в локальном каталоге?
Приветствия
У вас есть __inits__.py в подкаталогах? –