Skip to content

Commit c0a9478

Browse files
committed
docs: package and deploy user facing python applications
1 parent 54d77a6 commit c0a9478

4 files changed

Lines changed: 127 additions & 27 deletions

File tree

.spellcheck_exceptions_dictionary.txt

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ UTF
1010
MYINC
1111
ASGI
1212
WSGI
13+
PAAS
14+
VHD
15+
AMI
16+
FPM
1317

1418

1519
# authors
@@ -45,6 +49,10 @@ classname
4549
dunder
4650
bitwise
4751
executionmodel
52+
userspace
53+
userguide
54+
sdist
55+
exe
4856

4957

5058
# python keywords
@@ -65,6 +73,7 @@ init
6573

6674
# technology:
6775
FastAPI
76+
flexx
6877
gunicorn
6978
JVM
7079
pyspelling
@@ -81,6 +90,22 @@ sqlalchemy
8190
libpq
8291
psycopg
8392
mako
93+
pynsist
94+
snapcraft
95+
virtualenv
96+
zipapp
97+
PEX
98+
macos
99+
osnap
100+
pacman
101+
kivy
102+
homebrew
103+
flatpack
104+
cx
105+
conda
106+
beeware
107+
gz
108+
AppImage
84109

85110

86111
# institutions:
@@ -95,9 +120,11 @@ runestone
95120
stackoverflow
96121
vidhya
97122
redhat
123+
Openstack
98124

99125

100126
# urls:
127+
pkgs
101128
readthedocs
102129
src
103130
txt
@@ -157,12 +184,18 @@ makotemplates
157184
ae
158185

159186

160-
# pythons implementations:
187+
# pythons implementations or runtimes:
161188
CPython
162189
IronPython
163190
jython
164191
pypy
165192
pythonnet
193+
brython
194+
pyscript
195+
Pyodide
196+
MicroPython
197+
CircuitPython
198+
166199

167200
# domain specific - C/Python API
168201
PyTypeObject

1_implementations/0_def.txt

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,33 @@
1-
Known implementations (Python Software Foundation, 2023):
2-
* CPython: Original and First Python.
3-
Implementations in C.
4-
Compiles/Interprets to machine code.
1+
- known implementations (Python Software Foundation, 2023):
2+
- CPython: Original and First Python.
3+
Implementations in C.
4+
Compiles/Interprets to machine code.
55

6-
* Jython: Python implementations in Java.
7-
Compiles/Interprets to to JVM bytecode
8-
runs on the JVM.
9-
details: https://www.jython.org/index
6+
- Jython: Python implementations in Java.
7+
Compiles/Interprets to to JVM bytecode
8+
runs on the JVM.
9+
details: https://www.jython.org/index
1010

11-
* Python for .Net: CPython running as .NET managed application.
12-
details: https://pythonnet.github.io/
11+
- Python for .Net: CPython running as .NET managed application.
12+
details: https://pythonnet.github.io/
1313

14-
* IronPython: Python Implementations using .NET framework.
15-
Compiles/Interprets to .NET IL(Intermediate Language) and .NET assemblies.
16-
runs on .NET DLR(Dynamic Language Runtime)
17-
details
14+
- IronPython: Python Implementations using .NET framework.
15+
Compiles/Interprets to .NET IL(Intermediate Language) and .NET assemblies.
16+
runs on .NET DLR(Dynamic Language Runtime)
17+
details
1818

19-
* PyPy: Python implementations in Python.
20-
details: https://www.pypy.org/
19+
- PyPy: Python implementations in Python.
20+
details: https://www.pypy.org/
21+
22+
- MicroPython
23+
24+
- Brython: https://github.com/brython-dev/brython
25+
26+
- ports:
27+
- Pyodide: https://github.com/pyodide/pyodide
28+
- platform:
29+
- PyScript: https://github.com/pyscript/pyscript
2130

2231
References:
2332
Python Software Foundation. 2023. The Python Language Reference. https://docs.python.org/3.11/reference/introduction.html#alternate-implementations.
24-
33+
PyPA. 2025. Overview of Python Packaging. https://packaging.python.org/en/latest/overview/

dictionary.dic

1.03 KB
Binary file not shown.

packaging_and_distribution/2_packaging_scenarios.txt

Lines changed: 67 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
packaging considerations: target environment + deployment experience
22
- target audience:
33
- developers
4-
- datacenter operators
4+
- data center operators
55
- non technical end users
66
- ...
77
- runtime environment:
@@ -55,14 +55,72 @@ packaging scenarios:
5555
- python applications:
5656
- target audience: non-technical end users AND runtime environment = end user machines.
5757
- key: selection of tools is reasoned from dependence on the runtime environment.
58+
- console scripts(i.e. terminal programs) or plugin extensible apps:
59+
- entry points: https://setuptools.pypa.io/en/latest/userguide/entry_point.html
5860
- approaches:
59-
-
60-
-
61-
-
62-
-
63-
-
64-
-
65-
-
61+
- depend on a framework: use the framework's/platform's packaging tools and conventions.
62+
- examples:
63+
- Platform-as-a-Service(PAAS)
64+
- web browsers:
65+
- https://brython.info
66+
- mobile applications
67+
- cross_platform:
68+
- https://beeware.org
69+
- https://github.com/kivy
70+
71+
- depend on a preexisting Python installation: use existing Python on the target runtime environment
72+
- examples:
73+
- Python Executable (PEX)
74+
- zipapp
75+
- shiv
6676

77+
- depend on a separate software distribution ecosystem:
78+
- python application packages(akin to apt, homebrew, pacman etc.):
79+
- Anaconda
80+
- packaging with Anaconda: https://docs.conda.io/projects/conda-build/en/latest/user-guide/tutorials/index.html
81+
- native Python to Anaconda: https://conda.io/projects/conda-build/en/latest/user-guide/tutorials/build-pkgs-skeleton.html
82+
83+
- bring your own Python executable:
84+
- properties:
85+
- usually involves bundling the interpreter into the executable.
86+
- freezing: package Python programs in a format native to the target runtime(e.g. OS)
87+
- tools(i.e. freezers):
88+
- single-user deployment:
89+
- cross_platform:
90+
- py_installer
91+
- cx_freeze
92+
- constructor
93+
- macos:
94+
- py2app
95+
- windows:
96+
- py2exe
97+
- pynsist
98+
- only windows and macos:
99+
- osnap
100+
- multi-user deployment:
101+
- chef omnibus
102+
103+
- bring your own userspace: Operating-System-Level virtualization or Containerization
104+
- tools:
105+
- AppImage
106+
- Docker
107+
- flatpack
108+
- snapcraft
109+
110+
- bring your own kernel: classical virtualization
111+
- tools:
112+
- Vagrant
113+
- Virtual Hard Disk(VHD), Amazon Machine Image(AMI)
114+
- Openstack
115+
116+
- bring your own hardware: Python programs bundled with the hardware as a deployment unit:
117+
- tools:
118+
- MicroPython and CircuitPython for small devices and embedded devices
119+
- Conventional hardware to install in data centers.
120+
121+
- other approaches:
122+
- operating system packages(i.e. deb, rpm, etc):
123+
- tools: FPM
124+
- virtualenv
67125
References:
68-
https://packaging.python.org/en/latest/overview/#packaging-applications
126+
PyPA. 2025. Overview of Python Packaging. https://packaging.python.org/en/latest/overview/

0 commit comments

Comments
 (0)