12
votes

Partager des modules de services publics à travers les projets Python

Quelle serait la meilleure stratégie de structure de répertoire pour partager un module Utilitaires à travers mes projets Python? Comme les modules communs seraient mis à jour avec de nouvelles fonctions, je ne voudrais pas les mettre dans le répertoire d'installation Python.

project1/
project2/
sharedUtils/


0 commentaires

3 Réponses :


6
votes

Faire un package autonome séparé? Et mettez-le dans les packages / sites de votre installation Python?

Il y a aussi mon favori personnel en matière de développement de développement: Utilisation de liens symboliques et / ou *. PTH fichiers.


6 commentaires

Comme il existe de nombreuses possibilités ... J'utilise "l'approche Socrate": essayez de faire réfléchir les gens sur les possibilités.


Comment gérez-vous le contrôle de la révision de cette façon? Lorsque vous engagez votre projet, allez-vous également manuellement dans le répertoire des packages de site et faites-vous la même chose?


@ikarampa: Je ne suis pas tout à fait sûr de vous suivre. Pourriez-vous rehrasser et / ou commencer une nouvelle question?


Salut, désolé d'être une douleur! Je pense que ma question est répondue. Juste pour effacer cela: lorsque vous utilisez un package autonome sur les packages / sites, chaque fois que vous commettez le projet, faites-vous aussi comme le module Helper? Depuis qu'ils sont dans différents endroits, comment résolvez-vous? (utilisateur Windows, donc symboldiens no bons ici!)


Si le module d'assistance est un projet seul, il vous appartient de décider que je suppose. Sous Windows, vous pouvez utiliser les fichiers *. PTH au lieu de symboles.


Comment structurez-vous ce "paquet autonome" de sorte que. 1) Le projet1 peut utiliser le code dans ShareDutils et 2) ShareDutils peut utiliser un autre code dans ShareDutils. Les espaces de noms d'importation Python ne semblent pas rendre cela possible. Y a-t-il un exemple trivial de cela quelque part?



6
votes

Supposons que vous ayez ShareDutils / utils_foo code> et ShareDUTILS / UTILS_BAR code>. Vous pouvez modifier votre pythonPath pour inclure ShareDutils code>, puis les importer dans Project1 code> et Project2 code> Utilisation

PYTHONPATH=/path/to/sharedUtils:/other/paths
export PYTHONPATH


3 commentaires

Désolé mais nouveau à Python, coderiez-vous le chemin complet de PythonPath ou d'utiliser "../"?


@ikarampa, pas de problème. PythonPath nécessite un chemin complet (absolu).


Lorsque vous distribuez votre fichier, vous avez besoin de concaténer tous les utilisateurs dans un répertoire et des importations standard fonctionnera comme normale. Ok l'a eu! Merci



6
votes

Structure de répertoire: xxx pré>

avec les répertoires comme vous l'avez montrée, à partir de foo.py code> à l'intérieur du répertoire code> DIRECT1 code> Peut ajouter le chemin relatif à ShareDutils code> comme suit: P>

import sys
sys.path.append("../sharedUtils")
import bar


0 commentaires