Рекомендуемый файл .gitignore для проектов Python?

109

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

До сих пор у меня было...

*.pyc
*.pyo

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

build/
dist/

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

Какие-нибудь рекомендации для меня?

  • 0
    Спасибо за отличные ответы, все. + Очки для всех!
  • 13
    Этот проект github.com/github/gitignore был создан, чтобы ответить именно на этот вопрос.
Показать ещё 2 комментария
Теги:
gitignore
pygtk

5 ответов

26
Лучший ответ

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

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

Благодаря Джейкоб Каплан-Мосс

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

  • 27
    Хранить репозиторий SVN в том же дереве, что и ваш репозиторий Git !? Какой монстр будет делать такие вещи?
  • 0
    @Daenyth хихикать, ну не очень, но я , как правило , найти какую - то остатки .svn каталоги валяется , если я получаю компонент из другого источника (особенно в старых компонентах) , а также я очень ленивый , поэтому я иногда скопировать извлечения вместо экспорта вещи из СВН. Однажды я даже видел парня, который совершал в GIT оставшиеся .svn dirs. Вы можете столкнуться со всеми видами странных вещей, работая с глупыми людьми.
Показать ещё 5 комментариев
164

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/
  • 1
    почему мы должны игнорировать * .mo файлы? просто для любопытства. .po файлы этих gettext скомпилированы на сервере отдельно?
  • 3
    Файлы .mo являются машиночитаемой (двоичной) версией файлов .po, и, как известно, гораздо лучше хранить двоичные файлы вне версионного хранилища, когда вы можете (и должны это делать, поскольку включаете оба .po и .mo означает также хранение дублированных данных в репозитории, которые VCS не может даже "раздавить")
Показать ещё 2 комментария
15

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

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

  • 0
    В этом есть смысл. Мне нравится этот метод отделения общего конфига от конкретного / локального / частного.
  • 0
    Как это работает? То есть, как Django или Python узнают, когда среда является локальной, а когда - рабочей?
6

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

  • 0
    Понял. Поскольку Django не применяет большую часть имени файла и структуры каталогов, их сложно определить заранее. Но я могу, по крайней мере, отметить это, поэтому я помню, когда я создаю новый проект.
  • 0
    Ну, думаю, вы должны, по крайней мере, сделать так, чтобы все загруженные пользователем файлы были в ОДНОЙ папке в вашем медиа-каталоге, например. media/uploads , так что вы можете игнорировать их все с одним правилом ...
4

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

MANIFEST
*.egg-info
  • 0
    Я думаю, что я мог бы оставить их вне моего значения по умолчанию, потому что некоторые из моих проектов имеют дистрибутивы setuptools, которые потребуют их. Но для плагинов и тому подобного, да.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню