Onde está localizado um módulo Python no disco?

Às vezes, quando importamos um módulo em Python, surge a curiosidade para ler o código-fonte desse módulo, para descobrir o que aquele código faz realmente. Existe uma forma bem simples de descobrir a localização de um módulo no disco. Após importar um módulo, basta verificar o atributo __file__ do módulo.

>>> import os
>>> print os.__file__
/usr/lib/python2.7/os.pyc

Esse arquivo, cujo caminho é impresso na tela é, na realidade, o arquivo binário contendo o bytecode compilado. Porém, se retirar o c do final do nome do arquivo, teremos o arquivo-fonte (.py). No exemplo acima, podemos ver o código-fonte do módulo em:

/usr/lib/python2.7/os.py

Outro exemplo, se quisermos ver o código-fonte do módulo timeit, fazemos o seguinte:

>>> import timeit
>>> print timeit.__file__
/usr/lib/python2.7/timeit.pyc

O arquivo-fonte então está em:

/usr/lib/python2.7/timeit.py

Também poderíamos procurar pelo módulo dentro da lista sys.path, que contém os caminhos onde o interpretador busca pelos módulos a serem importados.