Créer un executable egg¶
Problem¶
In Java, you can distribute your project in JAR format. It is essentially a ZIP file with some metadata. The project can be launched easily:
$ java -jar project.jar
What is its Python equivalent? How to distribute a Python project (with several modules and packages) in a single file?
Solution¶
The following is based on this post, written by bheklilr. Thanks for the tip.
Let’s see the following project structure:
MyApp/
MyApp.py <--- Main script
alibrary/
__init__.py
alibrary.py
errors.py
anotherlib/
__init__.py
another.py
errors.py
configs/
config.json
logging.json
Rename the main script to __main__.py and compress the project to a zip file. The extension can be .egg:
myapp.egg/ <--- technically, it's just a zip file
__main__.py <--- Renamed from MyApp.py
alibrary/
__init__.py
alibrary.py
errors.py
anotherlib/
__init__.py
another.py
errors.py
configs/
config.json
logging.json
How to zip it? Enter the project directory (MyApp/) and use this command:
zip -r ../myapp.egg .
Now you can launch the .egg file just like you launch a Java .jar file:
$ python myapp.egg
You can also use command-line arguments that are passed to __main__.py.