2009-11-10 15 views
0

Je voudrais créer une librairie, disons foolib, mais pour séparer les différents sous-paquets, de manière à avoir le module, bazmodule, tous sous le même paquetage foolib. En d'autres termes, je veux que le code client pour être en mesure de le faireOrganiser une librairie python en plugins

import foolib.barmodule 
import foolib.bazmodule 

mais pour distribuer barmodule et bazmodule comme deux entités indépendantes. Remplacez aussi le module par le paquet ... ba [rz] module peut être une librairie fukll avec un contenu complexe.

La raison derrière ce choix est multiple:

  • Je voudrais un utilisateur d'installer uniquement barmodule s'il a besoin ainsi.
  • Je voudrais garder les modules relativement indépendants et légers.
  • mais je voudrais les garder sous un espace de noms commun.

jQuery a une structure similaire avec les plugins.

Est-ce faisable en python avec le standard setuptools et la procédure d'installation?

+0

J'ai demandé quelque chose de similaire: http://stackoverflow.com/questions/1443146/how-do-i-protect-my-python-codebase-so-that-guests-cant-see-certain-modules-but –

Répondre

0

Oui, créez simplement un répertoire foolib, ajoutez-y un __init__.py et faites de chaque sous-module un fichier .py.

/foolib 
    barmodule.py 
    bazmodule.py 

alors vous pouvez les importer comme ceci:

from foolib import barmodule 
barmodule.some_function() 
+0

Oui, ça je le sais. Mon problème n'est pas comment créer un paquet contenant deux modules. Mon problème est de les distribuer comme deux "sous-bibliothèques" indépendantes du même espace de noms de bibliothèques. –

+0

Pourquoi ne pas simplement avoir un dossier/plugins/dans lequel les utilisateurs peuvent déposer des plugins et qui est vérifié quand foolib est appelé? – Soviut

Questions connexes