为Python项目添加.gitignore文件的最佳实践?

为Python项目添加.gitignore文件的最佳实践?,python,django,git,pygtk,gitignore,Python,Django,Git,Pygtk,Gitignore,我正在尝试收集一些默认设置,但有一件事我意识到我没有一个标准用于.gitignore文件。有一个很好的线程显示了,但是我没有看到很多关于Python和相关工具(PyGTK、Django)的建议 到目前为止,我已经 *.pyc *.pyo …用于已编译对象和 build/ dist/ …用于设置工具输出 .gitignore文件的一些最佳实践是什么?我可以从哪里获得关于这些最佳实践的更多信息?一个问题是,您是否也希望在项目中使用git。如果是这样,您可能希望从存储库中排除本地sqlite文件,

我正在尝试收集一些默认设置,但有一件事我意识到我没有一个标准用于.gitignore文件。有一个很好的线程显示了,但是我没有看到很多关于Python和相关工具(PyGTK、Django)的建议

到目前为止,我已经

*.pyc
*.pyo
…用于已编译对象和

build/
dist/
…用于设置工具输出


.gitignore文件的一些最佳实践是什么?我可以从哪里获得关于这些最佳实践的更多信息?

一个问题是,您是否也希望在项目中使用git。如果是这样,您可能希望从存储库中排除本地sqlite文件,那么同样的情况也可能适用于文件上载(主要是在您的媒体文件夹中)。(我现在谈论的是django,因为您的问题也被标记为django)

,用于django项目


*~适用于所有项目。

以下是安装工具可能遗留的一些其他文件:

MANIFEST
*.egg-info
使用时,我在
.gitignore
中有以下内容(以及
*.pyo
*.pyc
):

多亏了

此外,我倾向于将
.svn
放入,因为我工作的地方使用了多个SCM-s。


涵盖了大部分的一般内容-

# 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/


参考资料:

将svn回购与git回购保存在同一棵树中!?什么样的怪物会做这样的事?@Daenyth咯咯地笑,其实不是,但如果我从另一个源(特别是旧组件)获取组件,我往往会发现一些剩余的
.svn
目录,而且我很懒,所以我有时会复制签出,而不是从svn导出内容。有一次我甚至看到一个家伙真的在做剩菜。svn dirs在GIT里。当你和愚蠢的人一起工作时,你可能会遇到各种各样的奇怪的事情。好吧,我正试图把他们吸引到StackOverflow上…:pI还没有使用Buildout,但可能很快就会需要。。。所以我会把他们列在名单上。谢谢您可能应该将
*.svn
放在您的
.global\u gitignore
中,而不是放在单个项目中。我想我可能会将它们排除在默认设置之外,因为我的一些项目有可能需要它们的setuptools发行版。但是对于插件之类的,是的。这是有意义的。我喜欢这种将常规配置与特定/本地/私有配置分离的方法。这是如何工作的?也就是说,Django或Python如何知道环境何时是本地的,何时是生产环境?理解。由于Django没有强制执行太多的文件名和目录结构,因此很难预先指定它们。但我至少可以记下来,这样我就记得我在创建一个新项目时。我想你至少应该让所有用户上传的文件都放在媒体目录的一个文件夹中,例如
media/uploads
,这样你就可以用一条规则“忽略”所有文件……这个项目就是为了回答这个问题而设置的。。。不要忘了添加,因为它也是一个python项目。只需转到gitignore.io并键入python即可获得标准文件,因为问题已经结束,我在这里评论我认为应该是答案的内容。如果您在PyCharm IDE上,可能需要忽略
.idea/
目录。这取决于是否要共享某些/所有项目设置。关于这个问题,我们为什么要忽略*.mo文件?只是出于好奇。这些gettext的.po文件是单独在服务器上编译的吗?.mo文件是.po文件的机器可读(二进制)版本,而且众所周知,如果可以,最好将二进制文件保存在版本化存储库之外(而且您应该这样做,因为同时包含.po和.mo意味着还要在存储库中保留重复的数据,VCS甚至不能“挤压”)为什么不呢。DS_Store?我真的很困惑,为什么他们在
.gitignore
中有
.python版本
:这已经在上面提到过了!@Emmanuel在另一个答案中提到的不是通用的样板文件,它有许多不必要的东西。这里提到的是针对任何Django/python通用的。确实,对此感到抱歉。。。不幸的是,我不能取消我的否决票,直到答案被编辑。。。
# 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/
# 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/