Python projeleri için .gitignore dosyası eklemek için en iyi uygulamalar? [kapalı]


209

Bazı varsayılan ayarlarımı toplamaya çalışıyorum ve fark ettiğim bir şey .gitignore dosyaları için bir standart yok. Visual Studio projeleri için iyi bir .gitignore gösteren büyük bir iş parçacığı var , ancak Python ve ilgili araçlar (PyGTK, Django) için pek çok öneri görmüyorum.

Şimdiye kadar ...

*.pyc
*.pyo

... derlenmiş nesneler için ve ...

build/
dist/

... kurulum araçları çıktısı için.

.Gitignore dosyaları için en iyi uygulamalar nelerdir ve bu en iyi uygulamalar hakkında daha fazla bilgiyi nereden bulabilirim?


16
Bu proje github.com/github/gitignore tam olarak bu soruya cevap verecek şekilde kuruldu.
MatrixFrog

1
.. Sadece bir python projesi olduğu için github.com/github/gitignore/blob/master/Python.gitignore eklemeyi unutmayın .
Fábio Santos

1
gitignore.io'ya gidin ve standart dosyayı almak için python yazın,
Bhanu Sinha

Yanıtlar:


64

Oluşturma kullanırken .gitignore( *.pyove ile birlikte *.pyc) aşağıdaki var :

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

Jacob Kaplan-Moss'a teşekkürler

Ayrıca, .svnçalıştığım yerde birkaç SCM kullandığım için koyma eğilimindeyim .


35
SVP deposunu git deponuzla aynı ağaçta tutmak !? Ne tür bir canavar böyle bir şey yapar?
Daenyth

@Daenyth kıkırdama , gerçekten değil, ama .svnbaşka bir kaynaktan (özellikle eski bileşenlerde) bir bileşen alırsam etrafta kalan bazı dizinleri bulma eğilimindeyim ve ayrıca oldukça tembelim, bu yüzden bazen SVN'den bir şeyler ihraç etmek yerine kasaları kopyalarım . Bir keresinde GIT'de artık kalan .svn dirs'lerini yapan bir adam gördüm. Aptal insanlarla çalışırken her türlü garip şeylerle karşılaşabilirsiniz.
Davor Lucic

1
Ben StackOverflow onları kanca çalışıyorum ...: p
Davor Lucic

1
Henüz Buildout'u kullanmadım, ancak yakında bir güne ihtiyacım olacak ... Bu yüzden onları listeye koyacağım. Teşekkürler!
ewall

2
Muhtemelen *.svnprojenize .global_gitignoredeğil, kendi projenize koymalısınız .
Cowlicks

293

Github harika bir kazan plakasına sahiptir.

# 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 dosyalarını neden görmezden gelmeliyiz? sadece meraktan. gettext'in .po dosyaları sunucuda ayrı olarak derleniyor mu?
Ekin Ertaç

4
.mo dosyaları, .po dosyalarının makine tarafından okunabilir (ikili) sürümüdür ve - yaygın olarak bilindiği gibi - ikili dosyaları sürümlü bir deponun dışında tutmak mümkün olduğunda (ve her ikisini de .po dahil etmelisiniz) ve .mo,
VCS'nin

5
Neden .DS_Store olmasın?
MaxCore

Gerçekten onlar neden olarak karıştı .python-versionde .gitignoreburada: github.com/github/gitignore/blob/master/Python.gitignore#L82
aceofbassgreg

16

django projeleri için local_settings.py .

* ~ tüm projeler için.


Mantıklı. Genel yapılandırma belirli / yerel / özel ayırmak için bu yöntemi seviyorum.
ewall

Bu nasıl çalışıyor? Yani, Django veya Python çevrenin ne zaman yerel olduğunu ve ne zaman üretim olduğunu nasıl bilir?
MadPhysicist

13

Genel şeylerin çoğunu kapsar -

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

Referans: python .gitignore


Bu yukarıda belirtilmiştir!
Emmanuel

@Emmanuel Diğer cevapta sözü edilen genel bir kazan plakası değil, birçok gereksiz şey var. Burada bahsedilen, genel olarak herhangi bir Django / python içindir.
Ani Menon

Gerçekten, bunun için üzgünüm ... Maalesef cevap düzenlenene kadar downvote'umu iptal edemem ...
Emmanuel

6

Bir soru, git'i projelerinizin dağıtımı için kullanmak isteyip istemediğinizdir. Öyleyse, yerel sqlite dosyanızı depodan hariç tutmak istiyorsanız, muhtemelen dosya yüklemeleri için de geçerlidir (çoğunlukla medya klasörünüzde). (Sorunuz django ile de etiketlendiğinden şimdi django hakkında konuşuyorum)


Anladım. Django bir dosya adı ve dizin yapısının çoğunu zorlamadığından, bunları önceden belirtmek zordur. Ama en azından bunu not edebilirim, bu yüzden yeni bir proje oluştururken hatırlıyorum.
ewall

Eh, en azından tüm kullanıcı medya dir, örneğin bir klasörde dosya yükledi olması için ortak olmalıdır. media/uploads, böylece hepsini tek bir kuralla 'görmezden gelebilirsiniz' ...
Bernhard Vallant

4

Setuptools tarafından geride bırakılabilecek diğer bazı dosyalar şunlardır:

MANIFEST
*.egg-info

Bunları benim varsayılanım dışında bırakabilirim, çünkü bazı projelerimde ihtiyaç duyabilecek setuptools dağıtımları var. Ancak eklentiler ve benzeri için evet.
ewall
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.