Por que não enviar arquivos .pyc para git (e como consertar se você já fez)

Os novatos em Python freqüentemente cometem o erro de enviar .pycarquivos
em repositórios git. Embora não seja prejudicial na maioria dos casos, às vezes
pode doer mais tarde de maneiras estranhas. Mas distribuir esses
arquivos com o código não é necessário em primeiro lugar, então é melhor apenas mantê-los fora
do repositório.

Os arquivos fonte Python são compilados em bytecode e salvos no disco na
forma de .pycarquivos que são usados ​​pela
máquina virtual Python . Esses arquivos são gerados automaticamente e em tempo real em
cada máquina onde o código é executado, portanto, é praticamente inútil compartilhá-los
com colaboradores.

Além disso, caso .pycexista um arquivo para um módulo, seu código pode ser
importado mesmo após a exclusão do arquivo fonte do módulo. Isso pode levar a
bugs estranhos no caso de um usuário excluir um módulo Python e esquecer de
excluir o .pycarquivo ao fazer o check-in das alterações e um colaborador
na outra extremidade tem algum código que ainda importa do
módulo agora não existente (um cenário raro, mas acontecer!).

Para não compartilhar seus arquivos com outras pessoas, você deve adicionar a entrada no arquivo .gitigore e o git começará a ignorar quaisquer novos arquivos no repo. Mas e aqueles arquivos que já estão sendo rastreados pelo git? Para corrigir isso, precisamos pedir ao git para remover esses caminhos de seu índice, executando o comando com a opção..pyc"*.pyc"
.pyc


git rm--cached

Por exemplo.

$ git rm --cached *.pyc

Ou, para desfazer o rastreamento de todos os arquivos em um projeto recursivamente,.pyc

$ find . -name '*.pyc' | xargs -n 1 git rm --cached

À parte: caso você se pergunte por que os arquivos-fonte Python são “compilados para
bytecode” quando é uma linguagem interpretada, acho que esta resposta no
StackOverflow de Alex Martelli explica isso de forma excelente.