2 votes

Essayer de créer une instance de développement pour un projet de pyramide Python

J'ai donc cette application Python basée sur une pyramide, et mon flux de travail de développement consiste essentiellement à télécharger les fichiers modifiés directement dans la zone de production.

On est proche du lancement, et manifestement ça ne va plus marcher.

J'ai réussi à modifier les chaînes de connexion et le fichier development.ini et à faire pointer l'instance de développement vers une base de données secondaire.

Il ne me reste plus qu'à trouver le moyen de créer une autre copie du projet quelque part où je pourrai travailler sur certaines choses et ensuite effectuer les changements en direct.

Au début, je pensais que je pouvais simplement faire une copie du répertoire du projet ailleurs et l'exécuter avec des arguments différents pointant vers le nouvel emplacement. Cela n'a pas fonctionné.

Ensuite, j'ai essentiellement mis en place un tout nouveau projet appelé myproject-dev. J'ai suivi les instructions d'installation :

J'ai utilisé pcreate, puis setup.py develop, et ensuite j'ai copié mon development.ini depuis mon projet et j'ai soigneusement édité les différentes références à myproject-dev au lieu de myproject. Ensuite, initialize_myproject-dev_db /var/www/projects/myproject/development.ini

Finalement, j'obtiens une belle page de bienvenue de la pyramide indiquant que tout fonctionne correctement.

J'ai pensé qu'à ce moment-là, je pourrais simplement supprimer tout ce qui se trouvait dans le répertoire du projet et copier les principaux fichiers du projet, mais j'ai eu cette sensation au creux de l'estomac lorsque j'ai remarqué que beaucoup de choses ne fonctionnaient pas, comme les URL statiques.

Apparemment, je fais référence à myproject dans les includes et aussi dans les URLs statiques, et qui sait où encore.

Je ne pense pas que cette idée va marcher, donc j'ai abandonné pour le moment.

Quelqu'un peut-il me donner une idée de la manière dont les gens s'y prennent pour mettre en place une instance de développement pour un projet pyramidal Python ?

2voto

Mathieu Bridon Points 383

La première chose à faire, si ce n'est pas le cas, est de contrôler la version de votre projet. Je vous recommande d'utiliser git.

Outre les avantages liés à la gestion des modifications apportées à l'application lors du développement, cela facilitera également le partage des copies entre développeurs... ou avec le déploiement en production. En effet, la production peut tout simplement être git clone du projet, tout comme votre instance de développement.

La deuxième chose est que vous devez installer le projet dans votre chemin de bibliothèque Python. C'est ainsi que toutes les import et include vont fonctionner.

Je vous recommande de créer un environnement virtuel pour cela, avec soit virtualenv ou pew de sorte que votre application (et ses dépendances) soit "isolée" du reste du système et des autres applications.

Vous avez probablement un setup.py script dans votre projet. Si ce n'est pas le cas, créez-en un . Ensuite, installez votre projet avec pip install . en production, ou pip install -e . en cours de développement.

1voto

Peter Tirrell Points 853

Voici comment j'ai géré ma dernière application Pyramide :

J'avais à la fois un development.ini et un production.ini . En fait, j'ai eu un development.local.ini en plus des deux autres - un pour le développement local, un pour notre système de "test", et un pour la production. J'ai utilisé git pour le contrôle de version, et j'avais une branche principale pour les déploiements de production. Sur mon serveur de production, je créais l'environnement virtuel, etc., puis je tirais ma branche principale et l'exécutais à l'aide de la commande production.ini fichier de configuration. Les mises à jour impliquaient essentiellement de retourner dans le virtualenv et de tirer les dernières mises à jour du dépôt, puis de redémarrer le serveur pyramide.

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