J'ai la tâche de l'emballage et de l'expédition des applications commerciales bundle, qui comprend:
- une bibliothèque python (développé par nous)
- certains programmes python en fonction de la bibliothèque ci-dessus
- d'autres bibliothèques qui n'est pas développé par nous, mais qui sont des dépendances de notre bibliothèque.
- complet d'installation de python (python 2.6)
- d'autres choses, libs et des programmes dans d'autres langues. Pas un souci ici, car ils ne sont pas accrochés dans les machines ci-dessus, et l'actuel processus d'expédition travaille déjà.
Le module est livré à Linux, OSX et Windows. Sur Linux, il est distribué comme un simple tar.gz. Il suffit à l'utilisateur déballe tar.gz et source
un script bash en .bashrc
, de sorte que l'environnement est correctement réglé. Sur mac, c'est un dmg. Sur windows, je n'ai aucune idée. Le gars windows n'est pas ici aujourd'hui, mais ce que je vois c'est qu'un fichier exe est créé en quelque sorte.
Je vais maintenant vous expliquer plus en détail les points ci-dessus.
Notre Bibliothèque Python
Nous ne voulons pas donner de sources, de sorte que nous voulons vous fournir compilé uniquement des fichiers python. Une meilleure stratégie pour les rendre encore plus inviolable est la bienvenue, même si elle implique une certaine profondeur de piratage (par exemple, une fois j'ai vu la magie fait de l'importation de choses à partir d'un .zip qui a été "corrompu" ad-hoc). La bibliothèque à l'instant n'ont pas de niveau C ou de code similaire dépendants de la plateforme de code, mais cela va bientôt changer. Nous devrons donc nous fournir une plate-forme spécifique compilé .so
ensemble avec le pyc.
Clairement, cette bibliothèque sera livrée dans l'emballage, ainsi que le reste de notre application. Il sera donc installé sur le téléchargé bundle. Pour cette raison, il doit être entièrement transférable, et l'utilisateur doit en quelque sorte (que ce soit manuellement ou par l'intermédiaire de notre env script) ajouter l'emplacement du paquet décompressé à PYTHONPATH, afin que l'interprète puisse le trouver.
Nos Programmes Python
Nous enverrons des applications dans notre bundle, et ces demandes dépendra de notre bibliothèque. Le code de ces applications doit être visible par l'utilisateur (afin qu'il puisse apprendre à utiliser l'interface de la bibliothèque), ou n'est pas visible (pour ces services, nous voulons garder closed-source), donc une double approche.
Bibliothèques Supplémentaires
Notre bibliothèque dépend de la 3e partie des bibliothèques, nous aurons à livrer, de sorte que l'utilisateur est en place et fonctionne sans aucune dépendance à la chasse. Clairement, ces bibliothèques seront installés par nous dans le paquet, mais nous devons nous espérons que ces ne pas stocker le chemin d'installation quelque part au cours de la construire, car cela les rendrait non délocalisables.
Notre python
Nous enverrons notre version de python, qui nous supposons que l'utilisateur exécutera afin d'accéder à notre script. C'est parce que nous voulons être sûr de la version de python en cours d'exécution. Aussi, on peut bricoler un peu l'exécutable ou la bibliothèque standard. On peut avoir une préoccupation au sujet de l'interaction de ce python avec le standard de python, et si l'utilisateur veut une bibliothèque spécifique sur notre python il faut l'installer à l'intérieur de notre solution groupée, et non sur la norme de place pour les bibliothèques.
Demande
J'ai besoin de faire mon esprit autour de cette tâche. Je l'ai vu faire, mais jamais fait personnellement, j'ai besoin de votre point de vue. Ce que j'ai présenté ci-dessus, je pense que les choses devraient fonctionner, selon la façon dont les choses sont aujourd'hui, mais il peut être mauvais. Tout soupçon, de l'excentricité, de la suggestion, ou d'une stratégie pour un déploiement réussi est la bienvenue. Compte tenu de la complexité de la question, j'ai déjà annoncer une grande générosité sur elle, selon la meilleure réponse que je peux obtenir.