Pythonプロジェクトに.gitignoreファイルを追加するためのベストプラクティスは?[閉まっている]


209

私はいくつかのデフォルト設定を収集しようとしています、そして私が標準を持たないことに気付いた1つのことは.gitignoreファイルです。Visual Studioプロジェクトに適した.gitignoreを示す優れたスレッドがありますが、Pythonおよび関連ツール(PyGTK、Django)に関する推奨事項は多くありません。

これまでのところ...

*.pyc
*.pyo

...コンパイルされたオブジェクトと...

build/
dist/

... setuptoolsの出力用。

.gitignoreファイルのベストプラクティスにはどのようなものがありますか。これらのベストプラクティスの詳細はどこで確認できますか。


16
このプロジェクトgithub.com/github/gitignoreは、この質問に正確に答えるために設定されました。
MatrixFrog 2010

1
.. pythonプロジェクトでもあるため、github.com / github / gitignore / blob / master / Python.gitignoreを追加することを忘れないでください。
ファビオ・サントス

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-sを使用するので、私は入れがちです。


35
SVNリポジトリをgitリポジトリと同じツリーに維持する!?どんな怪物がそんなことをするのでしょうか?
Daenyth

@Daenyth クスクスもない、本当に、私はいくつかの残りの発見する傾向があり.svn、私は時々 、代わりにSVNからのものをエクスポートするのチェックアウトをコピーするので、私は(特に古いコンポーネントで)別のソースからコンポーネントを取得した場合に転がっディレクトリをしても私はかなり怠け者。GITで残された.svn dirsを実際にコミットしている男を見たことがあります。愚かな人々と一緒に仕事をしていると、あなたはあらゆる種類の奇妙なことに遭遇することができます。
Davor Lucic

1
まあ、私はそれらをStackOverflowにフックしようとしています...:p
Davor Lucic

1
私はまだBuildoutを使用していませんが、おそらく近いうちに必要になるでしょう...それで、それらをリストに載せます。ありがとう!
ewall、

2
を個別のプロジェクトではなくに配置する必要*.svnがあります .global_gitignore
16年

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ファイルはサーバーで個別にコンパイルされていますか?
EkinErtaç2016年

4
.moファイルは、機械で読み取り可能な(バイナリ)バージョンの.poファイルであり、-広く知られているように-可能であれば(そして、両方の.poを含める必要があるため)また、.moは、VCSが「スカッシュ」すらできないように、複製されたデータをリポジトリに保持することも意味します)
dappiu

5
なぜ.DS_Storeではないのですか?
MaxCore 2018

私は本当に彼らが持っている理由として混乱している.python-version中で.gitignore、ここで: github.com/github/gitignore/blob/master/Python.gitignore#L82
aceofbassgreg

16

local_settings.py、djangoプロジェクト用。

*〜すべてのプロジェクト。


それは理にかなっている。一般的な構成を特定の/ローカル/プライベートから分離するこの方法が好きです。
ewall、

これはどのように作動しますか?つまり、DjangoまたはPythonは、環境がローカルでいつ本番環境であるかをどのようにして知るのでしょうか。
MadPhysicist 2017

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

確かに、申し訳ありません...残念ながら、回答が編集されるまでは投票をキャンセルできません...
Emmanuel

6

1つの質問は、プロジェクトの展開にgitも使用するかどうかです。その場合、おそらくローカルのsqliteファイルをリポジトリから除外したい場合、おそらくファイルのアップロード(ほとんどの場合はメディアフォルダー内)にも同じことが当てはまります。(あなたの質問にもdjangoがタグ付けされているので、私は今djangoについて話している)


わかった。Djangoはファイル名とディレクトリ構造の多くを強制しないので、これらを事前に指定することは困難です。しかし、少なくともそれを書き留めることができるので、新しいプロジェクトを作成しているときは覚えています。
ewall、

少なくとも、すべてのユーザーがファイルをメディアディレクトリの1つのフォルダにアップロードすることを一般的にする必要があると思います。media/uploads、1つのルールですべてを無視することができます...
Bernhard Vallant

4

setuptoolsによって残される可能性のあるその他のファイルを以下に示します。

MANIFEST
*.egg-info

私のプロジェクトのいくつかは、それらを必要とするsetuptoolsディストリビューションを持っているので、私はこれらをデフォルトから外してもよいと思います。しかし、プラグインなどについては、そうです。
ewall
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.