Use the right tool for the right job.
If you're looking for The One True Language to Do All Things, you're looking at the problem wrong. As Google, Weta, the Mozilla Foundation, CERN, and many, many other organizations have found, Python scales up to some huge work loads. The trick is to use it where it works well and choose other languages where it is appropriate to do so.
As a devoted Python fan, I'll be the first to admit that it does have its weaknesses. It was never meant to be a speed demon for writing code close to the metal, for one. Managing multiple threads can be a challenge, too, if you don't think through your design ahead of time. Even with these challenges, as I noted above there are plenty of organizations using Python to run some HUGE work loads. CERN, for one, uses it to manage hundreds of petabytes of data for analysis:
Python's strengths lie exactly where they should be to make long term maintenance of any application easy:
1) Python makes writing easy to read code easy to do. This is critical when you have to dive into a module that you haven't looked at for a long time or when taking over code maintenance from someone else. (Note: While some will argue that you can write easy to read code in any language, only the most stubborn will say that every language makes this task as easy as Python does.)
2) Python's native development environment and ease of writing code makes rapid prototyping almost trivially simple. For simple tasks, moving from a working prototype to production is much faster than in many other languages. As you noted as a weakness but I see as a strength, Python also allows a small scale application to grow quite large before it has to be replaced.
I see this as a strength, not a weakness, for two reasons. First, writing clean code in Python is easy enough that rewriting from scratch in a new design much less expensive than it would be in C or Java. Second, see reason #3:
3) Python has a wide range of predefined modules written in C that handle the heavy lifting for compute intensive tasks. Where such a module doesn't exist, Python makes it easy and computationally cheap to call out to other resources to handle those tasks. Which leads us to advantages #4 and #5:
4) Because it's so easy to call out to external resources, it's easy to rewrite just the performance pain points in a more appropriate language.
5) Because it's so easy to call out to external resources, it's easy to design an application from the ground up that uses Python to stitch together disparate sources to complete a task.
6) Finally, Python is popular enough and has been around long enough that there is a very large pool of battle hardened libraries already built for you. Outside of the obvious things like NumPy, SciPy, PyQt, Django, etc., a little googling will turn up plenty of options for just about any task.
So, don't worry about replacing an app written in Python. You won't. ;-) (kidding! sort of) You might replace some pieces over time, but doing so is so easy that you won't mind at all.