पायथन परियोजनाओं के लिए .gitignore फ़ाइल जोड़ने के लिए सर्वोत्तम अभ्यास? [बन्द है]


209

मैं अपनी कुछ डिफ़ॉल्ट सेटिंग्स को इकट्ठा करने की कोशिश कर रहा हूं, और मुझे एक बात का एहसास हुआ कि मेरे पास .gitignore फ़ाइलों के लिए कोई मानक नहीं है। विजुअल स्टूडियो परियोजनाओं के लिए एक अच्छा .gitignore दिखाने वाला एक बढ़िया धागा है , लेकिन मैं पायथन और संबंधित उपकरणों (PyGTK, Django) के लिए कई सिफारिशें नहीं देखता।

अब तक, मेरे पास ...

*.pyc
*.pyo

... संकलित वस्तुओं के लिए और ...

build/
dist/

... सेटपुटूल आउटपुट के लिए।

.Gitignore फ़ाइलों के लिए कुछ सर्वोत्तम अभ्यास क्या हैं, और मैं इन सर्वोत्तम प्रथाओं के बारे में और कहाँ जा सकता हूँ?


16
इस परियोजना github.com/github/gitignore को इस प्रश्न का उत्तर देने के लिए स्थापित किया गया था।
MatrixFrog

1
.. बस github.com/github/gitignore/blob/master/Python.gitignore को जोड़ना न भूलें क्योंकि यह एक अजगर परियोजना भी है।
फैबियो सांतोस

1
सिर्फ गोटो gitignore.io और टाइप फाइल पाने के लिए अजगर टाइप करें,
भानु सिन्हा

जवाबों:


64

बिल्डआउट का उपयोग करते समय मेरे पास .gitignore(साथ *.pyoऔर साथ *.pyc) निम्नलिखित हैं :

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

करने के लिए धन्यवाद जैकब कपलान-मॉस

इसके अलावा, मैं .svnकई एससीएम-एस का उपयोग करता हूं, जहां मैं काम करता हूं।


35
अपने git रेपो के रूप में एक ही पेड़ में एक svn रेपो रखते हुए !? ऐसा कौन-सा राक्षस ऐसा काम करेगा?
डेनिथ

@Daenyth खिसियाना , अच्छी तरह से वास्तव में नहीं है, लेकिन मैं कुछ बचे हुए को खोजने के लिए करते हैं .svnचारों ओर झूठ बोल निर्देशिका अगर मैं (पुराने घटकों में विशेष रूप से) किसी अन्य स्रोत से एक घटक प्राप्त है और यह भी मैं काफी आलसी तो मैं कभी कभी के बजाय SVN से सामान के निर्यात की checkouts नकल कर रहा हूँ । मैंने एक बार जीआईटी में एक आदमी को वास्तव में बचे हुए .svn डायर को देखा था। मूर्ख लोगों के साथ काम करने पर आप हर तरह की अजीब चीजों में भाग सकते हैं।
लूसिक

1
वैसे मैं उन्हें StackOverflow पर हुक करने की कोशिश कर रहा हूँ ...: पी
लूसिक

1
मैंने अभी तक बिल्डआउट का उपयोग नहीं किया है, लेकिन शायद किसी दिन जल्द ही आवश्यकता होगी ... इसलिए मैं उन्हें सूची में डाल दूंगा। धन्यवाद!
18

2
आपको संभवतः *.svnअपने में रखना चाहिए .global_gitignore, व्यक्तिगत परियोजनाओं में नहीं।
काउलिक्स

293

गिथब के पास एक शानदार बॉयलरप्लेट है

# 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 फाइलें सर्वर पर अलग से संकलित हैं?
इकेन एर्टक

4
.mo फाइलें .po फाइलों के मशीन पठनीय (बाइनरी) संस्करण हैं, और -as व्यापक रूप से ज्ञात हैं- यह एक वर्जनेड रिपॉजिटरी के बाहर बाइनरी फाइलों को रखने के लिए बहुत बेहतर है, जब आप (और आपको चाहिए, क्योंकि दोनों शामिल हैं।) और .mo का अर्थ यह भी है कि रिपॉजिटरी में डुप्लीकेट डेटा रखने के लिए, कि VCS "स्क्वैश" भी नहीं कर सकता)
dappiu

5
क्यों नहीं .DS_Store?
मैक्सकोर 20

मैं वास्तव में करने के लिए कारण है कि वे राशि के रूप में उलझन में हूँ .python-versionमें .gitignoreयहाँ: github.com/github/gitignore/blob/master/Python.gitignore#L82
aceofbassgreg

16

django परियोजनाओं के लिए local_settings.py

* * सभी परियोजनाओं के लिए।


यह समझ आता है। मुझे सामान्य कॉन्फ़िगरेशन को विशिष्ट / स्थानीय / निजी से अलग करने का यह तरीका पसंद है।
इवॉल्व

यह कैसे काम करता है? यही है, Django या पायथन को कैसे पता चलता है कि पर्यावरण स्थानीय है और उत्पादन कब है?
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/

संदर्भ: अजगर


यह पहले से ही ऊपर उल्लेख किया गया है!
इमैनुएल

@Emmanuel अन्य उत्तर में जो उल्लेख किया गया है, वह जेनेरिक बॉयलरप्लेट नहीं है, इसमें कई अनावश्यक चीजें हैं। यहाँ उल्लेख किसी भी Django / अजगर के लिए उदारता से कर रहे हैं।
ऐनी मेनन

वास्तव में, इसके लिए खेद है ... दुर्भाग्य से मैं अपने डाउनवोट को रद्द नहीं कर सकता जब तक कि उत्तर संपादित नहीं किया जाता ...
इमैनुअल

6

एक सवाल यह है कि क्या आप भी अपने प्रोजेक्ट के डिप्लोमेंट के लिए गिट का इस्तेमाल करना चाहते हैं। यदि ऐसा है तो आप शायद अपनी स्थानीय साइक्लाइट फ़ाइल को रिपॉजिटरी से बाहर करना चाहते हैं, तो संभवतः फ़ाइल अपलोड (ज्यादातर आपके मीडिया फ़ोल्डर में) पर लागू होती है। (मैं अभी django के बारे में बात कर रहा हूं, क्योंकि आपके सवाल को django के साथ टैग किया गया है)


समझ लिया। जैसा कि Django एक फ़ाइल नाम और निर्देशिका संरचना के बहुत से लागू नहीं करता है, इसे पहले से निर्दिष्ट करना कठिन है। लेकिन मैं कम से कम इसका एक नोट बना सकता हूं इसलिए मुझे याद है कि मैं एक नया प्रोजेक्ट कब बना रहा हूं।
इवॉल्व १५'१०

अच्छा लगता है कि आपको कम से कम अपने सभी उपयोगकर्ता अपलोड की गई फ़ाइलों को आपके फ़ोल्डर में आपके मीडिया dir, जैसे कि आम करना चाहिए। media/uploads, इसलिए आप उन सभी को एक नियम के साथ 'अनदेखा' कर सकते हैं ...
बर्नहार्ड वालेंट

4

यहाँ कुछ अन्य फाइलें हैं जिन्हें सेटप्टूल द्वारा पीछे छोड़ा जा सकता है:

MANIFEST
*.egg-info

मुझे लगता है कि मैं इसे अपने डिफ़ॉल्ट से बाहर छोड़ सकता हूं, क्योंकि मेरी कुछ परियोजनाओं में सेटप्टूल वितरण हैं, जिनकी उन्हें आवश्यकता होगी। लेकिन प्लगइन्स और इस तरह के लिए, हाँ।
.'१० को
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.