5 votes

VCS et structure de projet Python : Comment configurer automatiquement le PYTHONPATH ?

Il y a de nombreuses suggestions sur le web concernant la structure du projet Python peut/doit être, par exemple Quelle est la meilleure structure de projet pour une application Python?.

"dossier-projet"
+- doc
+- apidoc
+- scripts
+- "dossier-src"
+- tests

Il semble que de nombreuses personnes dans le monde Python préfèrent que "dossier-src" et "dossier-projet" soient égaux (ou très similaires). Cependant, les scripts et les tests devront sûrement importer des modules de dossier-src, donc soit je dois

  • exécuter tous les scripts et tests lorsque le dossier-projet est mon répertoire de travail actuel, ou
  • le PYTHONPATH doit contenir le dossier-projet, non?

Ou y a-t-il une autre possibilité que j'ignore pour le moment?

Supposons que j'aie une telle structure et que j'aie configuré correctement le PYTHONPATH. Maintenant, je commit le projet dans un VCS et un autre développeur le récupère. Sur sa machine, le PYTHONPATH ne sera pas correctement défini et les imports dans les scripts et tests ne fonctionneront pas.

  1. Y a-t-il une possibilité de rendre la définition de PYTHONPATH partie du projet, de sorte qu'elle puisse faire partie du contrôle de version?
  2. Existe-t-il une structure de projet différente qui me permettrait de récupérer et de commencer à utiliser le projet sans modifier le PYTHONPATH?
  3. La solution suggérée ici: Python - Comment configurer PYTHONPATH avec une structure de répertoire complexe? (c'est-à-dire inclure un court extrait de modification de sys.path dans chaque script et test) est-elle la bonne?
  4. Un module site http://docs.python.org/2/library/site.html serait-il utile?
  5. Quel est votre flux de travail lorsque vous développez un projet avec une structure similaire?

1voto

Venkatesh Points 179

Même si la structure du projet est complexe et que les cas de test utilisent src dans un package différent, vous pouvez ajouter PYTHONPATH dans les Variables d'Environnement de Windows

Mon ordinateur --> Propriétés --> Propriétés Système --> Onglet Avancé --> Variables d'Environnement. Ajoutez une nouvelle variable système PYTHONPATH et ajoutez le répertoire de vos projets à cette variable avec le délimiteur ';'

Je vous suggère de conserver un readme.txt dans votre projet qui explique clairement comment ajouter PYTHONPATH pour exécuter les scripts. C'est similaire à ajouter le PATH de android-sdk pour travailler avec adb shell, ajouter le chemin Java pour faire fonctionner Java dans l'invite de commandes

Ainsi, le readme.txt aide à exécuter le script lorsqu'il est téléchargé sur une machine différente avec une seule modification (ajout de la variable PYTHONPATH avec la valeur = chemin du projet)

Vous n'avez pas besoin d'ajouter tous les modules de src pour faire fonctionner les cas de test qui utilisent src

Voici un exemple de structure de projet :

SAMPLEPROJECT
    src
      com
        sample
          example
            utils
              a.py
              b.py

    testcases
      test1.py
      test2.py

    res
    docs

Si le cas de test test1.py utilise a.py et b.py : Ne pas ajouter le module utils à PYTHONPATH, puisque vous avez déjà ajouté le chemin du projet au chemin python, votre instruction d'importation ressemble à ceci dans test1.py

from src.com.sample.example.utils import a.py
from src.com.sample.example.utils import b.py

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