я знаю, что нет способа указать, что все переменные являются глобальными, но вы можете импортировать модуль, пока вы находитесь в модуле. просто убедитесь, что вы делаете это в функция, которая не вызывается на верхнем уровне, вы играете здесь с бесконечной рекурсией, но простое использование должно быть безопасным.
#module.py
foo = bar = 0 # global
def init()
import module as m
m.foo = 1
m.bar = 2 # access to globals
если init
был вызван на верхнем уровне, то у вас бесконечная рекурсия, но похоже, что весь смысл в том, чтобы избежать запуска этого кода на верхнем уровне, поэтому вы должны быть в безопасности. Поскольку вы хотите сделать это в файле __init__.py
, просто импортируйте верхний уровень пакета.
Во время прогулки мне пришло в голову, что здесь нет проблем с рекурсией, потому что код верхнего уровня будет запускаться только один раз при первоначальном импорте.