J'ai des questions sur les fichiers egg en Python.
J'ai beaucoup de code Python organisé par package et j'essaye de créer des fichiers egg. Je suis les instructions , mais elles sont très courantes.
Selon cela, il semble que j'ai besoin d'un fichier setup.py.
- Pouvez-vous me dire ce que je dois mettre dans le fichier setup.py et où il doit résider?
- Je suppose qu'il suffit de créer setup.py puis de démarrer "setup.py bdist_egg" pour obtenir le fichier egg. Pouvez-vous confirmer s'il vous plaît?
- Est-il possible d'inclure uniquement des fichiers .pyc dans le fichier egg?
- Avoir un fichier .egg, comment puis-je simplement démarrer le code à partir de celui-ci sans décompresser comme le
java -jar <jar file>
fait?
Réponses:
Vous lisez la mauvaise documentation. Vous voulez ceci: https://setuptools.readthedocs.io/en/latest/setuptools.html#develop-deploy-the-project-source-in-development-mode
La création de setup.py est traitée dans la documentation distutils de la documentation de la bibliothèque standard de Python ici . La principale différence (pour les œufs de python) vous est
import setup
desetuptools
, nondistutils
.Oui. Cela devrait être juste.
Je ne pense pas.
pyc
les fichiers peuvent dépendre de la version et de la plate-forme. Vous pourrez peut-être ouvrir l'œuf (il ne devrait s'agir que de fichiers zip) et supprimer des.py
fichiers laissant des.pyc
fichiers, mais cela ne serait pas recommandé.Je ne suis pas sûr. Cela pourrait être le «mode développement». Ou recherchez-vous un mode «py2exe» ou «py2app»?
la source
Pour le n ° 4, la chose la plus proche de démarrer java avec un fichier jar pour votre application est une nouvelle fonctionnalité de Python 2.6, des fichiers zip exécutables et des répertoires .
Où myapp.zip est un zip contenant un
__main__.py
fichier qui est exécuté en tant que fichier de script à exécuter. Vos dépendances de package peuvent également être incluses dans le fichier:Vous pouvez également exécuter un œuf, mais l'incantation n'est pas aussi agréable:
Cela place le myapp.egg sur le chemin Python et utilise l'argument -m pour exécuter un module. Votre myapp.egg ressemblera probablement à quelque chose comme:
Et python fonctionnera
__init__.py
(vous devriez vérifier que__file__=='__main__'
dans votre application pour une utilisation en ligne de commande).Les fichiers Egg ne sont que des fichiers zip, vous pourrez donc peut-être ajouter
__main__.py
à votre œuf avec un outil zip et le rendre exécutable en python 2.6 et l'exécuter commepython myapp.egg
au lieu de l'incantation ci-dessus où la variable d'environnement PYTHONPATH est définie.Plus d'informations sur les fichiers zip exécutables, y compris comment les rendre directement exécutables avec un shebang, peuvent être trouvées sur le blog de Michael Foord sur le sujet .
la source
Je pense que vous devriez utiliser des roues python pour la distribution au lieu de l'oeuf maintenant.
la source