Python 프로젝트에 .gitignore 파일을 추가하는 모범 사례? [닫은]


209

기본 설정 중 일부를 수집하려고하는데 표준이 없다는 것을 깨달았습니다 .gitignore 파일입니다. Visual Studio 프로젝트에 좋은 .gitignore를 보여주는 훌륭한 스레드가 있지만 Python 및 관련 도구 (PyGTK, Django)에 대한 권장 사항이 많지 않습니다.

지금까지 나는 ...

*.pyc
*.pyo

... 컴파일 된 객체 및 ...

build/
dist/

... 설정 도구 출력용.

.gitignore 파일에 대한 모범 사례는 무엇이며 이러한 모범 사례에 대한 자세한 내용은 어디로 갈 수 있습니까?


16
이 프로젝트 github.com/github/gitignore 는이 질문에 정확히 답하도록 설정되었습니다.
MatrixFrog

1
.. 단지 github.com/github/gitignore/blob/master/Python.gitignore 도 파이썬 프로젝트이기 때문에 추가하는 것을 잊지 마십시오 .
Fábio Santos

1
gitignore.io로 가서 python을 입력하여 표준 파일을 얻으십시오.
Bhanu Sinha

답변:


64

사용하는 경우 buildout 난에 다음과 같은 한 .gitignore(함께 *.pyo하고 *.pyc) :

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

Jacob Kaplan-Moss 덕분에

또한 .svn우리가 일하는 곳에서 여러 SCM을 사용하기 때문에 넣는 경향이 있습니다.


35
svn repo를 git repo와 같은 나무에 보관하십시오!? 어떤 괴물이 그런 짓을할까요?
데니스

@Daenyth giggle , 글쎄, 실제로는 아니지만 .svn다른 소스 (특히 오래된 구성 요소)에서 구성 요소를 가져 오는 경우 남은 디렉토리 를 찾는 경향이 있으며 SVN에서 물건을 내보내는 대신 체크 아웃을 복사하는 경우가 있습니다. . 한 번은 실제로 남자가 GIT에서 남은 .svn dirs를 저지르는 것을 보았습니다. 바보 같은 사람들과 일할 때 모든 종류의 이상한 것들을 만날 수 있습니다.
Davor Lucic

1
글쎄, 나는 그들을 StackOverflow에 연결하려고합니다 ... : p
Davor Lucic

1
아직 Buildout을 사용하지는 않았지만 곧 언젠가는 필요할 것입니다. 그래서 목록에 추가하겠습니다. 감사!
ewall

2
당신은 아마를 넣어해야 *.svn당신에 .global_gitignore없는 개별 프로젝트에.
cowlicks

293

Github에는 훌륭한 상용구가 있습니다.

# 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 파일을 무시해야합니까? 호기심을 위해서. gettext의 .po 파일은 서버에서 별도로 컴파일됩니까?
Ekin Ertaç

4
.mo 파일은 .po 파일의 기계 판독 가능 (이진) 버전이며, 널리 알려진 바와 같이 이진 파일을 버전이 지정된 저장소 외부에 보관하는 것이 가능할 때 (그리고 .po .mo는 저장소에 중복 된 데이터를 보관하는 것을 의미합니다. VCS는 "스쿼시"할 수 없습니다.)
dappiu

5
왜 .DS_Store가 아닙니까?
MaxCore

나는 정말 그들이 가지고있는 이유를 혼동하고있어 .python-version에서 .gitignore여기 : github.com/github/gitignore/blob/master/Python.gitignore#L82을
aceofbassgreg

16

local_settings.pydjango 프로젝트의 경우

모든 프로젝트에 대해 * ~.


말이 되네요 나는 일반적인 설정을 특정 / 로컬 / 개인과 분리하는이 방법을 좋아합니다.
ewall

어떻게 작동합니까? 즉, Django 또는 Python은 환경이 언제 로컬인지 언제 프로덕션인지 어떻게 알 수 있습니까?
MadPhysicist

13

대부분의 일반적인 내용을 다룹니다.

# 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


이것은 이미 위에서 언급했습니다!
Emmanuel

@ Emmanuel 다른 답변에서 언급 된 것은 일반적인 상용구가 아니며 많은 불필요한 것들이 있습니다. 여기에 언급 된 것은 일반적으로 Django / Python에 대한 것입니다.
Ani Menon

정말로, 미안합니다 ... 불행히도 답변을 편집 할 때까지 내 downvote를 취소 할 수 없습니다 ...
Emmanuel

6

한 가지 질문은 프로젝트의 디플로먼트에 git을 사용하려는 경우입니다. 그렇다면 리포지토리에서 로컬 sqlite 파일을 제외하려는 경우 파일 업로드 (대부분 미디어 폴더)에 동일하게 적용됩니다. (귀하의 질문에도 django가 태그되어 있기 때문에 django에 대해 이야기하고 있습니다)


이해했다. Django는 많은 파일 이름과 디렉토리 구조를 시행하지 않기 때문에 미리 지정하기가 어렵습니다. 그러나 적어도 메모를 할 수 있으므로 새 프로젝트를 만들 때를 기억합니다.
ewall

적어도 모든 사용자가 미디어 디렉토리의 하나의 폴더에 파일을 업로드하는 것이 일반적이어야한다고 생각합니다. media/uploads... 당신은 하나의 규칙으로 그들 모두를 '무시'할 수 있도록
베른하르트 Vallant

4

다음은 setuptools에 의해 남겨질 수있는 다른 파일들입니다.

MANIFEST
*.egg-info

내 프로젝트 중 일부에는 설치 도구 배포판이 필요하기 때문에 이것을 기본값에서 벗어날 수도 있다고 생각합니다. 그러나 플러그인과 같은 경우에는 그렇습니다.
ewall
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.