Да, вы можете использовать импорт из другого файла, перейдя в .os.
Тем не менее, питонский способ - просто импортировать нужные вам модули, не создавая из них цепочку (что может привести к циклическим ссылкам).
При импорте модуля код компилируется и вставляется в словарь имен -> объекты модуля. Словарь находится по адресу sys.modules.
import sys
sys.modules
>>> pprint.pprint(sys.modules)
{'UserDict': <module 'UserDict' from 'C:\python26\lib\UserDict.pyc'>,
'__builtin__': <module '__builtin__' (built-in)>,
'__main__': <module '__main__' (built-in)>,
'_abcoll': <module '_abcoll' from 'C:\python26\lib\_abcoll.pyc'>,
# the rest omitted for brevity
Когда вы попытаетесь импортировать модуль снова, Python проверит словарь, чтобы увидеть, есть ли он там. Если это так, он вернет вам уже скомпилированный объект модуля. В противном случае он скомпилирует код и вставит его в sys.modules.
Поскольку словари реализованы в виде хеш-таблиц, этот поиск выполняется очень быстро и занимает незначительное время по сравнению с риском создания круговых ссылок.
Редактировать: я не беспокоюсь об импорте
раз моя проблема заключается в визуальном
беспорядок, который ставит блок импорта
на файлы.
Если у вас есть только 4 или 5 таких импортов, это не слишком беспорядок. Помните: «Явное лучше, чем неявное». Однако, если это действительно беспокоит вас, сделайте следующее:
<importheaders.py>
from django.utils import simplejson
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext import db
<mycontroller.py>
from importheaders import *