Django continues to be the pick of libraries for Python developers. However, there are some not-so-well-known libraries that happened to gain traction among Python developers in 2016. In this blog, I am unveiling 7 Python libraries, excluding the established ones like Django, Flask, etc, that Python developers may find worth considering in 2017.
Mobile apps are everywhere, and are often meant for global population - be it for games, social media, health monitoring and whatnot. However, the problem with the standard data/time library for Python is that it doesn’t meet the requirements of modern apps that have their target audience living in different regions and countries. Arrow is one of the libraries to battle with this problem. It comes packed with features that simplify creation, formatting, manipulation and conversion of data, time and time stamps.
The library replaces the need for datetime type that supports Python 2 or 3. With Arrow, developers can convert one time zone to another at ease. Besides, Arrow’s date, time and calendar modules open gates to hassle-free internationalization of applications.
TensorFlow, launched by Google in November 2015, is an open-source software library for numerical computation. It’s been just over a year since TensorFlow was launched, but the library has already witnessed considerable popularity among Python developers. As a matter of fact, TensorFlow is one of the trendiest GitHub Python repositories.
The library uses data flow graphs capable of running over GPUs and CPUs in a desktop, server, or mobile device with a single API. TensorFlow was originally developed by researchers and engineers in Google's Machine Intelligence research organization for machine learning and deep neural networks research. Although TensorFlow has created ripples in the machine learning community, it has proved to be a good fit for production applications as well.
The release of AWS Lambda brought serverless architecture to the fore. Zappa is often said to be the next evolution of application deployment for Python web applications. Rich Jones, the principal author of Zappa and the CTO of Gun.io, said in an interview, “I believe that serverless architectures - that is to say, systems without any permanent infrastructure - are the future of network applications”.
With Zappa, deployment of all Python WSGI applications on AWS Lambda + API Gateway becomes a doddle. The library rids the need of spending hundreds or even thousands of dollars on VPS services like Linode or PaaS services like Heroku. In even simpler words, we can say that Zaapa allows deployment of microservices on the cloud without any hassles of server management. Zappa is faster and scalable, too.
Peewee is a simple, expressive ORM for Python and supports SQLite, MySQL, and PostgreSQL. A database is often must for applications that use external data. However, it’s a very challenging task to get and set data from a database through ad hoc connection strings. Here comes Peewee to rescue. The library makes it possible for developers and database engineers to use a safe, programmatic approach to access database resources using a set of intuitive Python classes.
Developers who have previously created a database in SQLAlchemy would agree that it’s much easier to create a database in Peewee. Peewee is also a fit for the Flask web framework.
Sanic is a Flask-like, uvloop-based web framework that makes Python fast. Sanik, designed for Python 3.5, allows developers to build on async/await syntax for defining asynchronous functions. Before Sanic, Python had no way to go so fast. Another library, uvloop, serves as a blazingly fast drop-in replacement for asyncio’s default event loop.
Sanik enables developers to write async applications in Python in a way that is very similar to how they would write them in Node.js. However, going by the Sanic author’s benchmark, uvloop is well capable of handling over 33k requests/sec, which is way more than the capability of Node.js. Since Sanic is still new, more improvements and changes are highly likely to be made into it in near future. You can also contribute to its open source repository.
You may know that Python offers some libraries, like matplotlib and seaborn, for data visualization. However, Bokeh is a library that is specifically designed for interactive visualization that targets modern web browsers for presentation. Developers can use Bokeh for creating top-notch novel graphics in a way that is much similar to the style of D3.js. Besides, you can extend this capability with high-performance interactivity over very large or streaming datasets.
You may like to give Bokeh a try for creating interactive plots, dashboards, and data applications. Developers can also use Bokeh for transforming visualization written in other libraries, like Matplotlib, Seaborn and ggplot. Bokeh also helps in research by nicely integrating with Jupyter Notebooks.
Blaze targets database and array technologies used for analytics queries. NumPy and Pandas don’t help when it comes to running analytics over a dataset that is too big to fit in our computer’s memory. In such a case, developers often resort to PostgreSQL, MongoDB, Hadoop, Spark, out-of-disk storage systems (PyTables and BColz), etc.
However, it’s a very challenging task to understand how each system works and enters data into the proper form. Due to lack of learning about how to mix and migrate data between new technologies, it becomes very difficult to derive effective results from data analytics. Blaze ends this predicament by providing a uniform interface to a variety of database technologies and abstractions for migrating data. Blaze is a good option for expressing computations.
Although there are many other less-known-yet-effective Python libraries, like Gym + Universe, Boto3, Hug, Scrapy, Beautiful Soup and many more, I have picked only seven as the blog could go endless. Python developers can explore these libraries to see if they fit into their needs and choose accordingly.