Лучшие практики для добавления файла .gitignore для проектов Python?

Я пытаюсь собрать некоторые из своих настроек по умолчанию, и я понял, что у меня нет стандарта для файлов .gitignore. Есть отличная ветка, показывающая хороший .gitignore для проектов Visual Studio, но я не вижу много рекомендаций для Python и связанных с ним инструментов (PyGTK, Django).

Пока у меня есть ...

*.pyc
*.pyo

... для скомпилированных объектов и ...

build/
dist/

... для вывода setuptools.

Каковы передовые практики для файлов .gitignore и где я могу получить дополнительные сведения об этих передовых методах?


person ewall    schedule 15.09.2010    source источник
comment
Этот проект github.com/github/gitignore был создан для ответа именно на этот вопрос.   -  person MatrixFrog    schedule 19.12.2010
comment
.. Только не забудьте добавить github.com/github/gitignore/blob /master/Python.gitignore, так как это тоже проект на Python.   -  person Fábio Santos    schedule 19.11.2012
comment
просто перейдите к gitignore.io и введите python, чтобы получить стандартный файл,   -  person Bhanu Sinha    schedule 29.03.2019
comment
Поскольку вопрос закрыт, я комментирую то, что, по моему мнению, должно быть здесь ответом. Возможно, вам придется игнорировать каталог .idea/, если вы используете PyCharm IDE. Это зависит от того, что если вы хотите поделиться некоторыми / всеми настройками проекта. Вот вопрос по этому поводу   -  person Teshan Shanuka J    schedule 31.05.2021


Ответы (6)


При использовании buildout у меня в .gitignore (вместе с *.pyo и *.pyc):

.installed.cfg
bin
develop-eggs
dist
downloads
eggs
parts
src/*.egg-info
lib
lib64

Спасибо Джейкобу Каплан-Моссу ​​

Также я обычно добавляю .svn, поскольку мы используем несколько SCM там, где я работаю.

person Davor Lucic    schedule 15.09.2010
comment
Хранение репозитория svn в том же дереве, что и репозиторий git !? Что за монстр мог такое сделать? - person Daenyth; 15.09.2010
comment
@Daenyth хихикает, ну не совсем, но я обычно нахожу какие-то оставшиеся .svn каталоги валяющимися, если я получаю компонент из другого источника (особенно в старых компонентах), а также я довольно ленив, поэтому иногда копировать чеки вместо экспорта из SVN. Однажды я даже увидел парня, который фактически фиксировал оставшиеся .svn каталоги в GIT. При работе с глупыми людьми можно столкнуться со множеством странных вещей. - person Davor Lucic; 15.09.2010
comment
Ну, я пытаюсь зацепить их за StackOverflow ...: p - person Davor Lucic; 15.09.2010
comment
Я еще не использовал Buildout, но, вероятно, когда-нибудь понадобится ... так что я внесу их в список. Спасибо! - person ewall; 15.09.2010
comment
Вероятно, вам следует поместить *.svn в свои .global_gitignore, а не в отдельные проекты. - person cowlicks; 15.01.2016
comment
Возможно, вы захотите рассмотреть и venv/*, если вы используете virtualenv. Virtualenv позволяет настроить отдельную среду Python для каждого проекта, чтобы библиотеки не перекрывались и не конфликтовали. Также помогает предотвратить поломку, но работает на моем компьютере. - person SilentSteel; 01.01.2018
comment
Venvs @SilentSteel IME хранятся в центральном месте в системе, а не в фактическом каталоге. - person Cruncher; 03.05.2020

Github имеет отличный шаблонный файл .gitignore

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

# C extensions
*.so

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

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

# Unit test / coverage reports
.tox/
.coverage
.cache
nosetests.xml
coverage.xml

# Translations
*.mo

# Mr Developer
.mr.developer.cfg
.project
.pydevproject

# Rope
.ropeproject

# Django stuff:
*.log
*.pot

# Sphinx documentation
docs/_build/
person seanrose    schedule 27.12.2012
comment
почему мы должны игнорировать файлы * .mo? просто из любопытства. Эти файлы .po gettext компилируются на сервере отдельно? - person Ekin Ertaç; 14.03.2016
comment
Файлы .mo представляют собой машиночитаемую (двоичную) версию файлов .po, и, как широко известно, гораздо лучше хранить двоичные файлы вне версионного репозитория, когда вы можете (и должны, поскольку включая оба .po и .mo означает также хранение дублированных данных в репозитории, которые VCS не может даже раздавить) - person dappiu; 17.06.2016
comment
Почему не .DS_Store? - person MaxCore; 05.12.2018
comment
Я действительно не понимаю, почему здесь .python-version в .gitignore: github .com / github / gitignore / blob / master / Python.gitignore # L82. - person aceofbassgreg; 28.12.2018

Охватывает большинство общих вещей -

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

# C extensions
*.so

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

# 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
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/

Ссылка: python .gitignore

person Ani Menon    schedule 29.07.2018
comment
Об этом уже говорилось выше! - person Emmanuel; 12.07.2019
comment
@Emmanuel То, что упоминается в другом ответе, не является общим шаблоном, в нем много ненужных вещей. Тот, что здесь упоминается, предназначен для любого Django / python в целом. - person Ani Menon; 13.07.2019
comment
В самом деле, извините за это ... К сожалению, я не могу отменить свой голос, пока ответ не будет отредактирован ... - person Emmanuel; 17.07.2019

local_settings.py для проектов django.

* ~ для всех проектов.

person Ofri Raviv    schedule 15.09.2010
comment
В этом есть смысл. Мне нравится этот метод отделения общей конфигурации от конкретной / локальной / частной. - person ewall; 15.09.2010
comment
Как это работает? То есть, как Django или Python узнают, когда среда является локальной, а когда - производственной? - person MadPhysicist; 07.07.2017

Один вопрос: хотите ли вы также использовать git для развертывания своих проектов. Если это так, вы, вероятно, захотите исключить свой локальный файл sqlite из репозитория, то же самое, вероятно, применимо к загрузке файлов (в основном в вашей папке мультимедиа). (Я сейчас говорю о django, так как ваш вопрос также помечен django)

person Bernhard Vallant    schedule 15.09.2010
comment
Понял. Поскольку Django не требует значительного количества имен файлов и структуры каталогов, их сложно указать заранее. Но я могу хотя бы отметить это, чтобы помнить, когда я создаю новый проект. - person ewall; 15.09.2010
comment
Думаю, вы должны, по крайней мере, сделать общедоступным, чтобы все файлы, загруженные вами пользователем, были в ОДНОЙ папке в вашем медиа-каталоге, например. media/uploads, так что вы можете «игнорировать» их всех с помощью одного правила ... - person Bernhard Vallant; 15.09.2010

Вот еще несколько файлов, которые могут остаться после установки setuptools:

MANIFEST
*.egg-info
person jathanism    schedule 15.09.2010
comment
Я думаю, что могу не использовать их по умолчанию, потому что в некоторых из моих проектов есть дистрибутивы setuptools, которым они могут понадобиться. Но для плагинов и тому подобного - да. - person ewall; 15.09.2010