Утверждения времени компиляции, как уже обсужденный здесь .
//--- size of static_assertion array is negative if condition is not met
#define STATIC_ASSERT(condition) \
typedef struct { \
char static_assertion[condition ? 1 : -1]; \
} static_assertion_t
//--- ensure structure fits in
STATIC_ASSERT(sizeof(mystruct_t) <= 4096);
Вы захотите прочитать об абсолютном и относительном импорте , который решает именно эту проблему. Использование:
from __future__ import absolute_import
Используя это, любое неукрашенное имя пакета всегда будет относиться к пакету верхнего уровня. Затем вам нужно будет использовать относительный импорт ( из .email import ...
) для доступа к вашему собственному пакету.
ПРИМЕЧАНИЕ: Вышеупомянутый из ...
строку необходимо поместить в любые файлы Python .py
2.x выше import ...
строки, которые вы используете. В Python 3.x это поведение по умолчанию, поэтому в нем больше нет необходимости.