Python has built considerable buzz in the large-scale web development space, but despite its popularity, it has failed to penetrate enterprise development. In this area, Python is still regarded as an alternative scripting language to Perl.
Python is one of the fastest-growing open source programming languages and is widely used across domains in building mission-critical applications. It also forms the base for various high-end publication websites, runs on several million cell phones and is used across industries such as air traffic control, feature-length movie animation, and shipbuilding.
The reviews are still borderline as to why Python may or may not work in the construction of enterprise-scale applications. It can be because of its relative obscurity since most development managers know very little about Python. In a competitive high-pressure environment, Python is used along with other languages for development. That is because the heads of the tech departments in such establishments are under the gun to produce finished applications.
Another reason is that Python's database access layer is a bit primitive and underdeveloped. Also, the absence of GUI and teamwork tools for developing graphical user interfaces on Python applications is also quite complex. But there is no accessible, easy-to-use GUI tool for Tkinter (Tk as deployed with Python). Also, the lack of availability of Python in mobile computing and browsers is also a potential weak point. Even though Python is present on many server and desktop platforms, it is weak in mobile computing and very few smartphone applications are developed with Python. It is also very rarely seen on the client side of a web application. Since Python is difficult to secure, it cannot be seen in browsers.
In terms of upgrades, problems can arise while using Python 2 versus Python 3 in different parts of an organization, and then upgrading the technology stack when it is incompatible with older versions.
Some of the main objections for Python as a viable enterprise-level programming language are a Smaller pool of Python developers compared to other languages, like Java:
Lack of true multiprocessor support
The absence of a commercial support point, even for an Open Source project (though this situation is changing)
Software performance (even though benchmarks repeatedly demonstrate that Python is comparable to Java in most applications)
Python has not been billed as fast in terms of runtime speed as compiled languages, such as C++
Since Python is easily used in conjunction with other languages, in a situation where users require a more structured language, they leverage Python to accentuate the development efforts. Now, this can only be done if users have a robust technology stack and framework, which will allow them to retain the benefits of using C++ for critical code while scripting around it using the flexibility of Python.
Even though Python has been billed to be strong in desktop and server platforms, it is weak on mobile platforms. Also, there are only a handful of smartphone apps developed using Python, and the language is rarely seen in the client side of web development applications.
In terms of package maturity and availability, the programming language is by and large driven by a community of volunteers who would not have time to document and support every module.
Python has certain design restrictions. Python developers often talk about the design restrictions in the language since it is dynamically typed. This means it requires more testing and errors to turn up only during runtime.
There are also several challenges with matplotlib, a non-interactive plotting package. For example, there is a lack of uniformity in interfaces for various methods and functions.
Despite its shortcomings, Python is hugely popular among the developer base and it is easier to find Python programmers than developers who have mastered Java. It is also easier to learn as compared to other languages like Java.