Но bar импортирует как foo, так и boo.
Не должно быть автоматически
доступно для бу?
Нет, это не должно: import
, как и любой другой способ связать имя, связывает это имя в одной конкретной области, а не «во всех областях, в которых вы когда-либо могли его хотеть».
Есть ли способ сделать это? Как сказал
boo.py автоматически генерируется для
я и я хочу, чтобы избежать добавления импорта Foo
к boo.py
Есть один очень плохой хак - я бы не хотел с этим мириться (я бы скорее потратил свою энергию на то, чтобы получить тот полностью сломанный генератор кода, который исправляет boo.py
- если у него такая огромная ошибка как недостающий важный необходимый импорт, какие еще ужасы он может иметь в запасе ?!), но, эй, это не мои похороны ...; -)
Есть bar.py
начало ...:
import foo
import boo
import __builtin__
__builtin__.foo = foo
Таким образом, вы сделали идентификатор foo
«фальшивым, искусственным встроенным именем» (единственный вид имени, которого доступен из любой области видимости, если он не скрыт другими промежуточными привязками название
в более близких областях) со ссылкой на модуль foo
.
НЕ рекомендуемая процедура, просто временный обходной путь для ужасной, вопиющей ошибки в генераторе кода, который создает boo.py
. Исправьте эту ошибку , чтобы вы могли удалить этот хак как можно скорее!