Should I put pyc files under version control? Should I put pyc files under version control? python python

Should I put pyc files under version control?


You shouldn't. .pyc files contain bytecode, which can be different for different versions and implementation of Python.

Just add *.pyc line in your .gitignore or global gitignore.

Also take a look at the great collection of gitignore files for almost all platforms. You can use this one for your python projects:

# Byte-compiled / optimized / DLL files__pycache__/*.py[cod]*$py.class# C extensions*.so# Distribution / packaging.Pythonenv/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 logspip-log.txtpip-delete-this-directory.txt# Unit test / coverage reportshtmlcov/.tox/.coverage.coverage.*.cachenosetests.xmlcoverage.xml*,cover# Translations*.mo*.pot# Django stuff:*.log# Sphinx documentationdocs/_build/# PyBuildertarget/


These files are compiled versions of the code already in the repo, so that Python can execute the code faster. Since they are a direct computational result of the actual source code there's no benefit to checking them in - they'd just need to be updated every time the source code was updated. Also, there's no guarantee (to my knowledge) that different machines or versions of Python will generate compatible .pyc files, meaning distributing the .pyc files you generated could potentially break other people's environments.

Instead you could fix the .gitignore file to ignore .pyc files and commit that to your fork (or even back to the upstream repo). That way no one will notice or need to worry about these files in the future.


There isn't anything bad about the file, but it's useless junk, it's there only to speed up python application execution, and it's rebuilt every time you make changes, so it will just grow over time, to fix it you might want to add __pycache__ line to your .gitignore file