Вы уверены, что жертвуете огромной переносимостью таким образом - прямо сейчас .pyc
файлы необычайно переносимы (часто используются гетерогенными системами в локальной сети например, через какое-то устройство сетевой файловой системы, хотя я никогда не был поклонником характеристик производительности этого подхода), в то время как ваш подход будет работать только на очень конкретных файловых системах и (я подозреваю) никогда не подключаюсь к сети гетерогенных машин.
Таким образом, было бы ужасной ошибкой сделать поведение, которое вы хотите использовать по умолчанию, но было бы обязательно иметь его как опцию , доступную для конкретного запроса, если ваша среда развертывания не волнует все вышеперечисленные проблемы и заботиться о некоторых из тех, кого вы упомянули. Еще один «классный вариант», который я бы использовал примерно в 100 раз чаще, заключается в том, чтобы положить .pyc
«файлы» в базу данных вместо того, чтобы иметь их в файловых системах.
Охлаждающая вещь заключается в том, что это (относительно) легко выполняется как дополнительный «импортный взлом» так или иначе (в зависимости от стилей Python) - наиболее легко в последних версиях с importlib, шедевр Бретта Кэннона (но это может сделать backporting более старым версиям Python более сложными, чем другие способы ... слишком многое зависит от того, какие версии вам нужно поддерживать, детали, которые я не вижу в вашем Q, поэтому я не буду вдаваться в реализацию подробности, но общая идея мало меняет реализации).
Спасибо, Алекс, ваша идея намного лучше, кеширование скомпилированных файлов в локальной базе данных/кеше намного лучше. – sorin