O que é a biblioteca padrão Python?
A biblioteca padrão oferece uma variedade de módulos que desempenham diferentes tipos de funções. Por exemplo, o módulo OS oferece as funções típicas que lhe permitem interagir com o sistema operativo, tais como dizer-lhe em que diretório está, mudar de diretório, as funções de ajuda dir(os) ou help (os), etc, o módulo matemático que oferece funções trigonométricas, logarítmicas, estatísticas, etc. Existem também módulos para aceder à Internet e processar os seus protocolos com urllib.request, para descarregar dados de URLs e smtplib, para enviar emails; ou módulos como a data e hora, que lhe permitem gerir datas e horas, módulos que lhe permitem comprimir dados, ou módulos de medição de desempenho. No entanto, as aplicações Python utilizam frequentemente pacotes e módulos que não fazem parte da biblioteca padrão.
De facto, a Python foi concebida para facilitar essa interoperabilidade. O problema, comum em ambientes de código aberto, é que as aplicações necessitam frequentemente de uma versão específica de uma biblioteca porque a aplicação requer que um determinado bug tenha sido corrigido ou que a aplicação tenha sido escrita utilizando uma versão obsoleta da interface da biblioteca.
Isto significa que pode não ser possível para a nossa instalação Python satisfazer os requisitos de todas as aplicações. Se a aplicação A precisa da versão 1.0 de um determinado módulo e a aplicação B precisa da versão 2.0, então os requisitos entram em conflito e a instalação da versão 1.0 ou 2.0 tornará uma das aplicações não funcional. A solução para este problema é a criação de um ambiente virtual, um diretório contendo uma instalação Python de uma determinada versão, mais alguns pacotes adicionais. Desta forma, diferentes aplicações podem utilizar diferentes ambientes virtuais. Para resolver o exemplo de requisitos conflituosos acima, a aplicação A pode ter o seu próprio ambiente virtual com a versão 1.0 instalada, enquanto a aplicação B tem outro ambiente virtual com a versão 2.0.