
On Feb 23, 2017, at 2:51 AM, Phil Mayers <p.mayers@imperial.ac.uk> wrote:
On 23/02/17 10:27, Hynek Schlawack wrote:
What I don't quite understand is how people can be in love with Go’s static linking but complaining about Virtualenvs in deployments. Unwieldy as virtualenvs are: *for Python code* they are exactly that: statically linked build artifacts. The principles are very similar, the execution is arguably better for Go.
Well, for one thing, Python virtualenv are problematic w.r.t. being relocatable. That alone makes them harder to use than a Go binary.
Yeah, this is the big issue. Hence: pex ;-). Or, 'pile of wheels' and 'venv on the fly (without dev tools)' as the installation mechanism on the target environment.
But honestly I think we're talking at cross purposes. I'm not complaining about virtualenv. We use them quite successfully.
I think this has been a super useful discussion, not at cross purposes at all! There's been a little bit of back-and-forth and repeating certain things, but not useless.
I'm trying to point out that *some* might find the system Python attractive because they can use OS-supplied python packages in lieu of the effort of setting up a binary build infrastructure.
So, I think everyone has a different perspective here; Hynek seems to be saying "all containers all the time" ;-). But from my perspective, linux distros provide a super useful service by providing a gigantic integrated build environment for TONS of C code. Avoiding the time and cost associated with setting up, i.e., an ImageMagick dev environment is _WELL_ worth the complexity of distro packages. Multiply this out by dozens of dependencies that a large application or site ends up needing, and distro packaging pays for itself many times over. However, avoiding having python-dev and a C compiler installed in your build environment seems like a bit of a fool's errand to me. It's superficially appealing, but I think that our guidance to most people should be "always have a build environment so you can build extension modules, any non-trivial project will eventually need a few". The work required to have a _python_ dev environment is orders of magnitude below, say, OpenSSL or ImageMagick or Avahi or (et cetera).
But I'm clearly not getting my point across, so I'm going to stop now.
Really I think that this has been a great exchange of ideas, and though we're veering off topic a little bit, I want there to be more discussion among systems operators how Twisted can and should be deployed, operationalized, monitored, etc. Twisted even has weird little edge-cases of its own (like the plugin system) which can sometimes complicate things. So by all means please don't feel like you need to stop sharing your view. -glyph