What is the standard Python library?
The standard library offers a wide variety of modules that perform different types of functions. For example, the OS module offers the typical functions that allow interaction with operating system, such as telling us which directory we are in, changing the directory, help functions, or help (os), etc., the math module that offers functions trigonometric, logarithmic, statistics etc. There are also modules to access the internet and process their protocols with urllib.request, to download data from a URLs and smtplib, to send emails; or modules such as datetime, which allow you to manage dates and times, as well as modules that allow compressing data, or modules for measuring performance.
However, Python applications often use packages and modules that are not part of the standard library, in fact, Python is designed to facilitate that interoperability. The problem, common in open source environments, is that applications frequently need a specific version of a library, because this application requires a bug to be fixed or the application has been written using an obsolete version of the library interface.
This means that it may not be possible for our Python installation to meet the requirements of all applications. If application A needs version 1.0 of a particular module and application B needs version 2.0, then the requirements are conflicting, and installing version 1.0 or 2.0 will leave one of the applications not working. The solution to this problem is to create a virtual environment, a directory that contains a specific Python installation version, as well as a few additional packages. In this way, different applications can use different virtual environments. To solve the conflicting requirements as seen above, application A can have its own virtual environment with version 1.0 installed, while application B has another virtual environment with version 2.0.