I forked a GitHub project in Python. After running the project for the first time, some .pyc files appeared inside. Should I put them under version control and commit them to my fork?
A program doesn't run any faster when it is read from a ". pyc" or ". pyo" file than when it is read from a ". py" file; the only thing that's faster about ".
__pycache__ is among the directories that shouldn't be pushed to remote repositories. Therefore, all you need to do is specify the directory in . gitignore file. Note that for Python projects in general, there are a lot more files that need to go into .
pyo file than when it is read from a . py file; the only thing that's faster about . pyc or . pyo files is the speed with which they are loaded.
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 .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/
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With