Question

En ce qui concerne l'organisation des modules Python, mon système Mac OS X est un désordre. J'ai des paquets qui traînent partout sur mon disque dur et aucun système particulier pour les organiser.

Comment faites-vous pour que tout reste gérable?

Était-ce utile?

La solution

Mon conseil:

Autres conseils

Outre PEP8 et easy_install, vous devriez jeter un œil à virtualenv. Virtualenv vous permet d'avoir plusieurs arborescences de bibliothèques Python différentes. Au travail, nous utilisons virtualenv avec un environnement d’amorçage pour configurer rapidement un environnement de développement / production dans lequel nous sommes tous synchronisés avec les versions des bibliothèques w.r.t, etc. Nous coordonnons généralement les mises à niveau des bibliothèques.

Il existe plusieurs familles de composants Python.

  1. Ce qui vient avec Python. Cela prend soin de lui-même.

  2. Ce que vous avez obtenu avec easy_install. Ceci, aussi, prend soin de lui-même.

  3. Les packages que vous deviez obtenir d’une autre manière, en tant que fichiers TARballs ou SVN. Créez un dossier Composants . Mettez les téléchargements ou les SVN en premier. A chaque fois. Effectuez les installations à partir de là.

  4. Les packages que vous avez écrits sont réutilisables. J'ai un dossier Projets avec chaque projet de ce dossier. Si le projet est hautement réutilisable, il possède un setup.py et je lance en fait l'installation comme si je l'avais téléchargée. Je n'en ai pas beaucoup, mais quelques-uns. Certains d’entre eux pourraient devenir des projets open source.

  5. Les dernières applications que vous écrivez. J'ai un dossier dans Projets avec chacune de ces applications de niveau supérieur. Ce sont généralement de gros objets décousus (comme les sites Django) sans setup.py . Pourquoi? Elles sont souvent complexes et ne nécessitent que quelques installations de serveur à gérer. Chacune de ces installations de serveur est unique. Celles-ci reposent généralement sur PYTHONPATH pour identifier leurs parties.

Notez le thème commun. Ce sont des composants que vous avez téléchargés ou des projets sur lesquels vous travaillez.

De plus, je le sépare (dans une certaine mesure) du client. J'ai un répertoire principal des dossiers du client, chacun d'eux ayant des projets et chaque projet ayant des ventes et une livraison. Tous les projets n'ont pas à la fois de vente et de livraison.

Peut-être PEP8 et easy_install peut vous aider?

Je conserve l'intégralité du code source de mes paquets dans ~ / Packages /, puis je fais une installation standard avec " python2.5 setup.py install " sur eux. Cela jette (pour moi) /Library/Frameworks/Python/Versions/current/lib/python2.5/site-packages/. Pour le développement de mon propre logiciel, des alias ont été configurés pour basculer entre trunk / branches / 1.0, etc., en effectuant une attribution préalable sur PYTHONPATH. (Je dois exécuter 'setup.py build_ext --inplace' dans chacun de ces répertoires avant de les importer correctement.)

Il est intéressant de noter que Python2.6 a un répertoire site-packages par utilisateur , qui vous semblera peut-être plus pratique.

Les " Modules " La page de documentation Python est un guide utile pour organiser le code, en particulier les "packages". sections

Mon conseil est d’essayer de tout mettre dans votre répertoire site-packages, sauf si vous avez une bonne raison de ne pas le faire. Et j'essaie d'éviter easy_install car je trouve que cela a tendance à compliquer mon chemin sys.path avec l'emplacement des oeufs, mais ce n'est que moi. Certaines personnes le trouvent utile.

Si de nombreux programmes utilisent des bibliothèques différentes qui peuvent entrer en conflit, vous pouvez également consulter virtualenv .

Je viens de parcourir ce site à partir d'une autre question StackOverflow: http://infinitemonkeycorps.net/docs/pph/ Cela concerne plus que le placement de module, mais une fois que vous l'avez placé, écrivez comment vous pouvez facilement gérer la documentation, les tests et la distribution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top