If you have a web project with simple requirements that need to launch quickly, which framework will you pick?
PHP is generally inconsistent across its naming of methods in the language. Naming schemes don't match cross-libraries inside the standard library and sometimes the methods don't return what you might expect. Therefore it is harder to leverage the tools that are included in the PHP libraries because you basically have to memorize their names, which is error-prone.
In Python, things are very consistent across all the standard libraries and generally all of the frameworks too, so this is our programming language of choice, unless it makes sense to reuse an existing product or framework to fulfill a specific business need and that product or framework is built on another language (think Wordpress or Solr).
Some of the more mature web frameworks, like Django and Zope, are fairly monolithic. They make architectural decisions for developers, such as what type of ORM to use with your database, what templating language to use, etc. While these preset choices save time initially getting started for larger projects, they tend to backfire for smaller projects because they provide more knobs to tweak and tame. Developers end up "fighting the framework" a lot for smaller projects, which is counterproductive if you aren't going to leverage the advanced tools that come with the framework in question.
Larger frameworks also come with bugs that always seem to crop up with your specific edge case. Developers sometimes waste a lot of time working around legacy issues or investigating a piece of code they didn't even work on themselves. Within a larger project, there is usually room to address those bugs, but that's not the case for a small and rapid development project.
On the other hand, "micro" frameworks like Bottle and Flask stand out with their minimalistic approach. Yet they don't offer much out-of-the-box and their communities are still fairly small.
Between the "full-stack" and the "micro" frameworks, you'll find CherryPy and Pyramid.
CherryPy can be a solid option for rapid web development projects. But we recommend choosing a Python web framework that has more tools out-of-the-box and also has a larger community of developers.
The three-year-old Pyramid web framework is a minimalistic approach inspired by Zope, Pylons, and Django. It makes very little assumptions right off the bat, and focuses on providing developers with the tools they need to make their own decisions.
With Pyramid, programmers have more flexibility. Developers can choose their own templating language, choose from the numerous form generations libraries, or choose their own database layer: do they want to use NoSQL or SQLAlchemy for with relational database? Pyramid is all open.
Pyramid is also one of the two available Python frameworks running on Python 3, which means it is built with the ability to keep up with technology improvements, unlike most other frameworks.
And Pyramid ranks really well in benchmark tests:
What used to be the repoze.bfg and the Pylons communities has combined into this new Pyramid community. Most Zope and Plone developers are already working on Pyramid-based projects. And many Django programmers now admit a secret preference to Pyramid (ours definitely do!).
There is a tremendous amount of knowledge backing up the Pyramid community. The framework benefits greatly from the years of experience its creators and contributors utilize when building the product. The Pyramid creator himself, Chris McDonough, gained a lot of experience at Zope Corporation and then supporting Zope applications. Pyramid is born out of his understanding of the benefits and shortcomings of Zope. McDonough is now working full-time on advancing the framework, setting the overall project direction, and leading the way about its architecture.
Another important trait to consider: the Pyramid community is very active, boasting regular commits and releases. And Pyramid developers have learned their lesson: they are putting a lot of emphasis on creating high-quality documentation.
Pyramid is fully tested. The main premise, in this community, is that, if a line of code isn't tested, it is considered broken. Pyramid core developers run coverage tests so that every line of code has a written test that covers it.
If you are new to Pyramid, the official Pyramid website has a few resources that can help you get up to speed right away: