Python — импортировать модуль из каталога, который не является пакетом

У меня такая структура каталогов...

dir/
  build.py
dir2
  dir3/
  packages.py

Теперь для build.pyтребуется packages.py-- и обратите внимание, что dir2не является пакетом.

Итак, как лучше всего загрузить packages.pyв build.py(структура каталогов не может быть изменена)

РЕДАКТИРОВАТЬ

The sys.path.Решение appendкажется хорошим -- но есть одна вещь -- мне нужно редко использовать файл packages.py-- и сохранять sys.path, который включает каталог который используется редко, но находится на переднем крае — это самое лучшее?

РЕДАКТИРОВАТЬ II

Я думаю, что решение impявляется лучшим.

import imp    
packages = imp.load_source('packages', '/path/to/packages.py')

РЕДАКТИРОВАТЬ III

для Python 3.x

Обратите внимание, что imp.load_sourceи некоторые другие функции устарели. Так что сегодня вам следует использовать imp.load_module.

fp, pathname, description = imp.find_module('packages', '/path/to/packages.py')
try:
    mod = imp.load_module('packages', fp, pathname, description)
finally:
    # since we may exit via an exception, close fp explicitly
    if fp:
        fp.close()

10
задан treecoder 10 May 2012 в 13:11
поделиться