Comment réutiliser une application réutilisable à Django
j'essaie de créer mon premier site à Django et comme je cherche par exemple des applications là-bas pour m'inspirer, je tombe constamment sur un terme appelé "réutilisable apps".
je comprends l' concept d'une application qui est réutilisable assez facilement, mais les moyens de réutiliser une application à Django sont tout à fait perdus pour moi. Quelques questions qui me tracassent dans toute l'affaire sont:
Quelle est la meilleure façon de réutiliser un L'application Django existante? Où dois-je le mettre et comment dois-je m'y reporter?
D'après ce que je comprends, la recommandation est de le mettre sur votre "PYTHONPATH", mais cela casse dès que j'ai besoin de déployer mon application à un endroit distant auquel j'ai un accès limité (par exemple sur un service d'hébergement).
donc, si je développe mon site sur mon ordinateur local et que j'ai l'intention de le déployer sur un FAI où je n'ai qu'un accès ftp, Comment puis-je réutiliser les applications Django tierces pour que si je déploie mon site, le site continue de travailler (par exemple, la seule chose sur laquelle je peux compter est que le fournisseur de services a Python 2.5 et Django 1.x installé)?
comment organiser mon projet Django pour pouvoir le déployer facilement avec toutes les applications réutilisables que je veux utiliser?
2 réponses
en général, la seule chose requise pour utiliser une application réutilisable est de s'assurer qu'elle est sur sys.path
, pour que vous puissiez l'importer à partir du code Python. Dans la plupart des cas (si l'auteur suit les meilleures pratiques), l'application réutilisable tarball ou bundle contiendra un répertoire de haut niveau avec docs, un README, un setup.py
, puis un sous-répertoire contenant l'application (voir la section django droit de vote pour un exemple; l'application elle-même est dans le "droit de vote" sous-répertoire). Ce sous-répertoire est ce qui doit être placé sur ton chemin Python. Les méthodes possibles pour faire comprendre:
- exécution
pip install appname
si l'application a été téléchargée à PyPI (ces jours-ci la plupart le sont) - installer l'application avec
setup.py install
(c'est le même résultat quepip install appname
, mais nécessite que vous téléchargiez et déballiez le code vous-même; pip le fera pour vous) - symlinking manuellement le répertoire de code vers votre répertoire de sites-paquets de Python
- utilisation de logiciels comme virtualenv pour créer un "environnement Python virtuel" qui a son propre répertoire site-paquets, et ensuite lancer
setup.py install
oupip install appname
avec cette virtualenv active, ou placer ou symlink l'application dans les paquets-sites de virtualenv (fortement recommandé sur toutes les options "installation globale", si vous tenez à votre santé mentale future) - placer l'application dans un répertoire où vous avez l'intention de placer diverses applications, puis ajouter ce répertoire à PYTHONPATH la variable d'environnement
vous saurez que vous l'avez au bon endroit si vous pouvez démarrer un interpréteur Python et "importer le vote" (par exemple) sans avoir d'Importeur.
sur un serveur où vous n'avez QU'un accès FTP, votre seule option est vraiment la dernière, et ils doivent la configurer pour vous. S'ils prétendent soutenir Django ils doivent fournir endroit où vous pouvez télécharger des paquets et ils seront disponibles pour l'importation en Python. Sans connaître les détails de votre hébergeur, il est impossible de dire comment ils structurent cela pour vous.
Une vieille question, mais voici ce que je fais:
si vous utilisez un système de contrôle de version (VCS), je suggère de mettre toutes les applications et bibliothèques réutilisables (y compris django) dont votre logiciel a besoin dans le VCS. Si vous ne voulez pas les mettre directement sous la racine de votre projet, vous pouvez modifier settings.py pour ajouter leur emplacement pour sys.chemin.
après ce déploiement est aussi simple que le clonage ou la vérification du dépôt VCS à l'endroit où vous voulez utiliser il.
Cela a deux avantages supplémentaires:
- inadéquation de la Version; votre logiciel utilise toujours la version avec laquelle vous l'avez testé, et non la version qui était disponible au moment du déploiement.
- Si plusieurs personnes travaillent sur le projet, personne d'autre n'a à traiter avec l'installation des dépendances.
quand il est temps de mettre à jour la version d'un composant, mettez-la à jour dans votre VCS puis propagez la mise à jour à vos déploiements via il.