Perl took the lead as the de facto scripting language of the early web, when experimentation and isolated code silos were rampant. As a result, it was tarred (perhaps unfairly) as an unmaintainable generator of spaghetti code. Developers felt that stricter languages such as Java were better suited to large-scale, multiprogrammer projects, where extensive advance modeling through UML and other tools could guide project development.
Fast-forward to the agile "revolution," where these tools were frequently viewed as unnecessary or even detrimental to successful projects when teams were small and well focused. Ruby demonstrated that a dynamically typed language (especially one with strong object orientation) could be both clean and efficient. Python, whose syntax is extremely clean, would seem to be a natural alternative.
Python's Zope, developed in the aforementioned dawn of time, has much in common with the heavyweight frameworks of the late '90s and was very much a reaction to the mess made with Perl/CGI. Unfortunately, this means that Zope can be very idiosyncratic and requires a steep learning curve, undercutting the flexibility derived from using a language like Python in the first place. Although Zope and its subprojects like Plone have been quite successful and are still in wide use, not all developers take to them.
Ambitious programmers in the last few years have shown that mixing agile practices and Python can result in a successful programming tool. The three ...