JMeter был бы одним таким инструментом. Может быть немного твердо изучить и настроить, но это обычно стоит того.
Вы можете поместить их в __ init __. Py
. Это происходит постоянно.
mypackage / __ init __. Py
:
MY_CONSTANT = 42
mypackage / mymodule.py
:
from mypackage import MY_CONSTANT
print "my constant is", MY_CONSTANT
Затем импортируйте mymodule:
>>> from mypackage import mymodule
my constant is 42
Тем не менее, если у вас есть константы, было бы разумно (возможно, лучше всего) поместить их в отдельный модуль (constants.py, config.py, ...), а затем, если вы хотите, чтобы они были в пространстве имен пакета, импортируйте их.
mypackage / __ init__ .py
:
from mypackage.constants import *
Тем не менее, это автоматически не включает константы в пространствах имен модулей пакета. Каждый из модулей в пакете по-прежнему должен будет явно импортировать константы либо из mypackage
, либо из mypackage.constants
.
Вы можете определять глобальные переменные откуда угодно, но это действительно плохая идея. импортируйте модуль __ builtin __
и измените или добавьте атрибуты к этим модулям, и вдруг у вас появятся новые встроенные константы или функции. Фактически, когда мое приложение устанавливает gettext, я получаю функцию _ () во всех своих модулях, ничего не импортируя. Так что это возможно, но, конечно, только для проектов типа приложений, а не для повторно используемых пакетов или модулей.
И я думаю, что никто не будет рекомендовать эту практику в любом случае. Что не так с пространством имен? В указанном приложении есть модуль версии, поэтому у меня есть «глобальные» переменные, такие как version.VERSION
, version.PACKAGE_NAME
и т. Д.
Вы не можете этого сделать. Вам придется явно импортировать ваши константы в пространство имен каждого отдельного модуля. Лучший способ добиться этого - определить ваши константы в модуле «config» и импортировать их везде, где вам это нужно:
# mypackage/config.py
MY_CONST = 17
# mypackage/main.py
from mypackage.config import *