7
votes

Combinaison de fichiers de module dans Python

Y a-t-il un moyen de réunir des fichiers Python, semblable à Jar en Java? J'ai besoin d'un moyen d'emballage de classes et de fonctions de Python, mais contrairement à un module standard, j'aimerais que ce soit dans un fichier.


0 commentaires

5 Réponses :


7
votes

1 commentaires

Merci! J'avais vu le terme "œuf" utilisé, mais je n'avais aucune idée de ce que c'était.



2
votes

L'approche la plus simple consiste à simplement utiliser zip . Un fichier jar en Java est un zipfile contenant des métadonnées telles qu'un manifeste; Mais vous n'avez pas nécessairement besoin de la métatada - Python peut importer de l'intérieur d'un zipfile aussi longtemps que vous placez ce zipfile sur Sys.Path, comme vous le feriez pour n'importe quel répertoire. Dans le ZIPFILE, vous pouvez avoir les sources (.PYPY Fichiers), mais Python devra ensuite les compiler à la volée à chaque fois qu'un processus les importe d'abord; ou vous pouvez avoir les fichiers bytecode (.pyc ou .pyo), mais vous êtes alors limité à une version spécifique de Python et à l'une des absences (pour le .pyc) ou la présence (pour .pyo) de drapeau -o (ou -OOO ).

Comme d'autres réponses indiquées, il existe des formats tels que .gg qui enrichissent le zipfile avec la métatada à Python, comme Java .jar , mais si dans un particulier Utilisez un étui qui vous donne une valeur supplémentaire WRT Un ZIPFILE UNIRE est une décision pour vous de faire


0 commentaires

1
votes

Vous pouvez créer des fichiers zip contenant du code Python et importer à partir de fichiers zip à l'aide de ZIPIMPORT . Un système tel que pyinstaller (plate-forme croisée) ou Py2exe (Windows) fera tout cela pour vous.


0 commentaires

0
votes

Lire ce PEP pour des informations.
En outre, Importer des modules de Zip .


0 commentaires

10
votes

Après avoir cherché une solution au même problème, j'ai fini par écrire un outil simple qui combine plusieurs fichiers .PY en un: PYBREEDER

Il ne fonctionnera que avec des modules pyrêts python et peut nécessiter une certaine erreur d'essai pour obtenir l'ordre des modules à droite, mais il est assez pratique chaque fois que vous souhaitez déployer un script avec certaines dépendances en tant que célibataire .py. Commentaires / Patchs / Critique sont les bienvenus!


1 commentaires

Je l'ai fait quelque chose de similaire car il semblait cool, mais Pyberdeder a l'air moins ridicule et hacky.