2015-08-20 13 views
11

Ho biforcato un progetto GitHub in Python. Dopo aver eseguito il progetto per la prima volta, alcuni file .pyc apparivano all'interno. Devo metterli sotto il controllo della versione e li impegna nella mia forcella?Devo mettere i file pyc sotto controllo di versione?

+4

NO! ............ –

+2

No, sono versioni "byte compilate" dello stesso codice. Vedi http://stackoverflow.com/questions/3878479/python-pyc-files-main-file-not-compiled –

+0

La maggior parte delle fonti suggerisce di non farlo, in quanto può creare lavoro extra prima di impegnarsi e spesso si traduce nell'impegno di nuovi codice sorgente, ma vecchio codice compilato. [fonte 1] (http://programmers.stackexchange.com/questions/192113/do-i-check-generated-code-in-to-source-control-or-not), [fonte 2] (http : //stackoverflow.com/questions/893913/should-i-store-generated-code-in-source-control) – Addison

risposta

5

Questi file sono compiled versions of the code already in the repo, in modo che Python possa eseguire il codice più velocemente. Dal momento che sono un risultato computazionale diretto del codice sorgente reale, non c'è alcun vantaggio nel controllarli - devono solo essere aggiornati ogni volta che il codice sorgente è stato aggiornato. Inoltre, non c'è alcuna garanzia (a mia conoscenza) che diverse macchine o versioni di Python generino file compatibili .pyc, il che significa che la distribuzione dei file .pyc generati potrebbe potenzialmente violare gli ambienti di altre persone.

Invece si potrebbe correggere il file .gitignore di ignorare .pyc file e impegnarsi che per la forcella (o anche indietro al pronti contro termine a monte). In questo modo nessuno noterà o dovrà preoccuparsi di questi file in futuro.

1

Non c'è niente di male nel file, ma è inutile spazzatura, serve solo a velocizzare l'esecuzione delle applicazioni Python, e viene ricostruito ogni volta che si apportano modifiche, quindi crescerà nel tempo, per risolverlo potrebbe voler aggiungere la riga __pycache__ al file .gitignore

5

Non necessario.

Ci sono file great collection of gitignore per quasi tutte le piattaforme. È possibile utilizzare questo uno per i vostri progetti di pitone:

# Byte-compiled/optimized/DLL files 
__pycache__/ 
*.py[cod] 
*$py.class 

# C extensions 
*.so 

# Distribution/packaging 
.Python 
env/ 
build/ 
develop-eggs/ 
dist/ 
downloads/ 
eggs/ 
.eggs/ 
lib/ 
lib64/ 
parts/ 
sdist/ 
var/ 
*.egg-info/ 
.installed.cfg 
*.egg 

# PyInstaller 
# Usually these files are written by a python script from a template 
# before PyInstaller builds the exe, so as to inject date/other infos into it. 
*.manifest 
*.spec 

# Installer logs 
pip-log.txt 
pip-delete-this-directory.txt 

# Unit test/coverage reports 
htmlcov/ 
.tox/ 
.coverage 
.coverage.* 
.cache 
nosetests.xml 
coverage.xml 
*,cover 

# Translations 
*.mo 
*.pot 

# Django stuff: 
*.log 

# Sphinx documentation 
docs/_build/ 

# PyBuilder 
target/ 
+0

Personalmente, preferirei di gran lunga ignorare i file in base alle necessità piuttosto che archiviare una serie di pattern di ignoranza che non vengono effettivamente utilizzati. – dimo414

1

No. necessario non mettere pyc sotto controllo delle versioni

regola comune è "Mai messo build-arifacts in controllo del codice sorgente, perché si disporre di fonti in fonte di controllo e può | devono ripetere processo"

PYCs sono tali manufatti per corrispondenti file PY