2014-05-13 3 views
1

J'ai un projet Python qui contient trois composants: des scripts exécutables principaux, des modules sur lesquels s'appuient ces scripts, et des données (bases de données sqlite3, fichiers plats, etc.) que ces scripts manipulent. Le niveau supérieur a un fichier __init__.py de sorte que d'autres programmes peuvent également emprunter des modules si nécessaire. La question est, est-ce plus "Pythonic" ou "correct" de déplacer mon projet dans le répertoire site-packages par défaut, ou de modifier PYTHONPATH pour inclure un répertoire au-dessus de mon projet (pour que le projet puisse être importé)? D'une part, ce que j'ai décrit n'est pas strictement un "paquet", mais un "projet" avec des données qui peuvent être traitées comme un paquet. Donc je penche dans la direction de modifier PYTHONPATH (après tout, PYTHONPATH doit exister pour une raison, non?)Dois-je ajouter mon projet Python au répertoire site-packages ou ajouter mon projet à PYTHONPATH?

+0

PYTHONPATH, mains vers le bas. –

Répondre

1

Certainement pas ajouter votre projet aux paquets de site cela va gâcher l'installation de votre système Python et va renvoyer au moment où une autre application viendrait là ou vous auriez besoin d'installer quelque chose.

Il y a enfin deux options populaires pour l'installation d'applications de python de manière isolée

En utilisant virtualenv

Voir virtualenv projet. Il permet

  • création de nouvel environnement python sectionneurs - python pour cet environnement est différent du système un et a sa propre configuration PYTHONPATH cela permet de garder tous les paquets installés privé pour elle.
  • activation et désactivation de virtualenv donné à partir de la ligne de commande pour l'utilisation de la ligne de commande. Après activate, vous pouvez exécuter pip install etc. et cela n'affectera que l'installation virtualenv donnée.
  • appeler un script Python en commençant par virtualenv Python copie - cela utilisera virtualenv lié (note, qu'il n'y a pas besoin d'appeler des activate)

utilisant zc.buildout

Ce paquet fournit la commande buildout. Avec cela, vous pouvez utiliser un fichier de configuration spécial et cela permet de créer un environnement python local avec tous les paquets et scripts.

Conclusions

  • virtualenv semble plus populaire aujourd'hui et je trouve beaucoup plus facile à apprendre et à utiliser
  • zc.buildout pourrait travailler aussi pour vous, mais soyez prêt pour un peu plus de temps à apprendre
  • installation dans les répertoires système Python doivent toujours être réservés pour des cas très particuliers (pip, easy_install), mieux l'éviter.
  • installer dans des répertoires privés et manipulatig PYTHONPATH est également une option, mais vous répéter, ce virtualenv fournit déjà
Questions connexes