Для контекста я работаю в крупном частном банке в Швейцарии, пишу корпоративные приложения в стеке J2EE.
В Python есть множество веб-фреймворков "Ready Ready". И есть множество крупных сайтов на Python.
Тем не менее, я думаю, что Python - плохой выбор для приложения для предприятий. Его можно использовать в качестве связующего языка или языка сценариев (наши сценарии развертывания - Python). Showtopper для меня - обратная совместимость (Python 3.x не обратно совместим с Python 2.x). Философия Python, кажется, больше для инноваций и делает язык лучше, плавнее и необязательно для поддержки программ, написанных 10 лет назад.
Что касается веб-фреймворка, мне нравится Django, но он определенно слишком молод и развивается слишком быстро, чтобы использоваться на предприятии. У меня нет большого опыта работы с другими основанными на Python средами.
Если вам нужна корпоративно-ориентированная среда, вам придется использовать корпоративные стеки (Java / .Net).
С другой стороны, даже в мире Java существует тенденция использовать менее предприимчивые фреймворки. Подумайте, что Spring против EJB2 или EJB3 намного легче, чем EJB2. Или подумайте, что Flex (который, на мой взгляд, далек от корпоративной среды) все больше используется на предприятии. Так что, если ваше предприятие достаточно открыто, готово прыгнуть в будущее, используя Django, RoR или другую современную Web 2.0, основанную на сообществе, Open Source, следующее поколение, основанные на активных записях фреймворки ... возможно, это не так уж много. ..
И, наконец, ответить на несколько ваших вопросов напрямую:
- поддержка ORM / кеширование / ...: да, но большинство решений основано на активной записи, что подходит для 90% того, что вы хотите сделать, но определенно не так полно / сложно, как JPA / Hibernate
- ориентированный на управление пользовательский интерфейс: нет, и вы не найдете стандарт, поэтому вы не найдете сторонние компоненты. Самое близкое, что вы можете получить - это интеграция с jQuery или другими инфраструктурами JS UI
- внедрение зависимостей: существует порт Spring для Python, поддерживаемый SpringSource. Но DI не в философии Python. Та же проблема будет решена с помощью функций, аргументов по умолчанию и замыканий. И мы можем утверждать, что решение Pythonic чище, чем способ Java ...
- модульные / интеграционные тесты: очень хорошая поддержка, несколько тестовых сред. Тем не менее, поддержка не так хороша, как в Java, где у нас есть множество инструментов для тестирования.
- хорошая поддержка IDE: существуют технические ограничения на количество поддержки, которую вы можете предоставить динамическому языку, но, по крайней мере, Eclipse и Netbeans имеют отличную поддержку Python.
- кластеризация / модульность: кластеризация будет решаться с использованием инфраструктуры «без участия пользователя» и / или распределенного кэширования. Насколько я знаю, решений для модульности (в смысле OSGI) не существует. Но я бы сказал, что очень часто OSGI - это решение проблемы, которой у нас нет на предприятии ...