A programming language is useless without a suitable interpreter or compiler.
But programs not only have to run, they also have to be delivered to the user. And the programs are rarely ready to go, so we need to update them after the installation. And they need to be developed further, sometimes for several years.
Sometimes, situations arise where you need to update third-party libraries and sometimes the compiler or interpreter itself. Several tools have appeared and evolved in Python to solve the above issues. We will discuss some of them below. In this lesson, we will talk about the importance of choosing your tools.
Most tools have good documentation, and we won't repeat it here. The lesson's purpose is to give you a general idea of what's available and to empower you to choose which tool you want from those available.
But first, let's get acquainted with a new concept — lock files.
What are lock files
When developing any library, the author should specify the versions of third-party packages required to make his code work.
Usually, the versioning is not rigid. Instead, programmers specify a range of versions that do not compromise compatibility between different parts.
But things don't go as planned sometimes:
- People may use a version range that is too wide
- Semantic versioning may not work properly
- There may be a bug in some package versions
In such cases, the project only works with a combination of different package versions and not with all of them, as may have been intended.