You can always use something like PyInstaller or freeze to produce a single-file executable that bundles all of its dependencies, though at that point you may as well just use Go which does this more naturally. Single-file Python executables tend to be huge and slow to start up, not a big deal for non-interactive server processes, but miserable for CLIs.
Once we need deps we need a more complicated setup, so Docker or Go usually prevail