Well, a lot of those requirements are highly bespoke to your task and to your team.
My C# pipelines and C# apps are far easier to package and deploy than my Python apps for example. And, as you said, the pipeline is normally a one time cost.
Comparing to Python is not exactly fair. I don't think there are any languages that have a worse deployment experience.
How does it compare to Go or Rust?
They want obfuscation. Rust libraries necessarily include the AST for public generic functions. So it may not be suitable.
I think that's a totally different topic, but regardless it's the same with C++ and I don't see that being a big issue to C++ library vendors.
Rust doesn't have a stable ABI so it's not like you could realistically distribute a closed source "native" Rust library anyway.
We were talking Delphi vs C#. Where does Python fit in?
Ah, I've not had to combine DLLs, obfuscate code, sign code or create Nuget packages.
All of that does sound painful.
What makes it easier in other languages? Is it a matter of better tooling?
I am not sure if it’s easier in other languages (no experience except mobile dev). But I do know packaging macOS and iOS apps is also a painful process and becomes more painful over time (e.g. Apple’s recently introduced notarization process).
The pipeline to deploy is complicated. Using a tool like ILMerge to combine DLLs into a single DLL (to prevent DLL hell issues). Using Babel to obfuscate the code base. Using nuspecs to create a Nuget package from the DLLs and various metadata. Signing the DLLs with some certificate. Then, if native stuff is included, also ensure the Nuget package can be deployed on all supported architectures. Probably some more stuff.
Setting up a pipeline in Azure devops for a product I am working on, for the company, is already taking me a week and will probably take another couple of days to complete. But at least it’s a one-time task.