256 votes

Meilleures pratiques pour ajouter un fichier .gitignore pour les projets Python?

Je cherche à collecter certains de mes paramètres par défaut, et une chose que j'ai réalisée pour laquelle je n'ai pas de standard est les fichiers .gitignore. Il y a un excellent fil montrant un bon .gitignore pour les projets Visual Studio, mais je ne vois pas beaucoup de recommandations pour Python et les outils connexes (PyGTK, Django).

Jusqu'à présent, j'ai...

*.pyc
*.pyo

...pour les objets compilés et...

build/
dist/

...pour la sortie de setuptools.

Existe-t-il des bonnes pratiques pour les fichiers .gitignore, et où puis-je en savoir plus sur ces bonnes pratiques ?

19 votes

Ce projet github.com/github/gitignore a été mis en place pour répondre exactement à cette question.

1 votes

.. N'oubliez pas d'ajouter github.com/github/gitignore/blob/master/Python.gitignore car c'est également un projet Python.

1 votes

Il suffit d'aller sur gitignore.io et de taper python pour obtenir le fichier standard.

348voto

seanrose Points 2414

Github a un excellent fichier .gitignore générique

# Fichiers compilés / optimisés / DLL
__pycache__/
*.py[cod]

# Extensions C
*.so

# Distribution / packaging
bin/
build/
develop-eggs/
dist/
eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# Journaux d'installation
pip-log.txt
pip-delete-this-directory.txt

# Rapports de test unitaire / couverture
.tox/
.coverage
.cache
nosetests.xml
coverage.xml

# Traductions
*.mo

# Mr Developer
.mr.developer.cfg
.project
.pydevproject

# Rope
.ropeproject

# Choses Django:
*.log
*.pot

# Documentation Sphinx
docs/_build/

1 votes

Pourquoi devrions-nous ignorer les fichiers *.mo ? Juste par curiosité. Ces fichiers .po de gettext sont-ils compilés sur le serveur séparément ?

5 votes

Les fichiers .mo sont la version lisible par machine (binaire) des fichiers .po, et -comme c'est largement connu- il est beaucoup mieux de conserver les fichiers binaires en dehors d'un référentiel versionné, lorsque vous le pouvez (et vous devriez, car inclure à la fois les fichiers .po et .mo signifie également conserver des données en double dans le référentiel, que le CVS ne peut même pas "écraser").

5 votes

Pourquoi pas .DS_Store ?

83voto

Davor Lucic Points 11072

Lors de l'utilisation de buildout, j'ai ce qui suit dans .gitignore (ainsi que *.pyo et *.pyc):

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

Merci à Jacob Kaplan-Moss

De plus, j'ai tendance à ajouter .svn car nous utilisons plusieurs SCM au travail.

42 votes

Garder un dépôt svn dans le même arbre que votre dépôt git !? Quel genre de monstre ferait une telle chose?

1 votes

Eh bien, j'essaie de les accrocher sur StackOverflow... :p

1 votes

Je n'ai pas encore utilisé Buildout, mais j'aurai probablement besoin de le faire un jour prochain... donc je vais les mettre sur la liste. Merci!

16voto

Ofri Raviv Points 10600

local_settings.py, pour les projets django.

*~ pour tous les projets.

0 votes

Cela a du sens. J'aime cette méthode de séparer la configuration générale de la spécifique / locale / privée.

0 votes

Comment cela fonctionne-t-il ? Autrement dit, comment Django ou Python savent-ils quand l'environnement est local et quand il est en production ?

6voto

Bernhard Vallant Points 18035

Une question est de savoir si vous voulez également utiliser git pour le déploiement de vos projets. Si c'est le cas, vous voudrez probablement exclure votre fichier sqlite local du dépôt, il en va probablement de même pour les téléchargements de fichiers (principalement dans votre dossier media). (Je parle de django maintenant, car votre question est également étiquetée avec django)

0 votes

Compris. Comme Django n'impose pas beaucoup de nom de fichier et de structure de répertoire, il est difficile de les spécifier à l'avance. Mais je peux au moins en prendre note pour m'en souvenir lorsque je crée un nouveau projet.

0 votes

Eh bien, je suppose que vous devriez au moins rendre commun d'avoir tous vos fichiers téléchargés par les utilisateurs dans UN dossier de votre répertoire média, par exemple, media/uploads, afin que vous puissiez les 'ignorer' tous avec une seule règle...

4voto

jathanism Points 15208

Voici quelques autres fichiers qui pourraient être laissés par setuptools :

MANIFEST
*.egg-info

0 votes

Je pense que je pourrais les laisser de côté par défaut, car certains de mes projets ont des distributions setuptools qui en auraient besoin. Mais pour les plugins et autres, oui.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X