On Feb 1, 2014, at 12:43 AM, Nick Coghlan <ncogh...@gmail.com> wrote:

> On 1 February 2014 18:23, Vinay Sajip <vinay_sa...@yahoo.co.uk> wrote:
>> On Fri, 31/1/14, Brian Wickman <wick...@gmail.com> wrote:
>> 
>>> There are myriad other practical reasons.  Here are some:
>> 
>> Thanks for taking the time to respond with the details - they are good data 
>> points
>> to think about!
>> 
>>> Lastly, there are social reasons. It's just hard to convince most engineers
>>> to use things like pkg_resources or pkgutil to manipulate resources
>>> when for them the status quo is just using __file__.  Bizarrely the social
>>> challenges are just as hard as the abovementioned technical challenges.
>> 
>> I agree it's bizarre, but sadly it's not surprising. People get used to 
>> certain ways
>> of doing things, and a certain kind of collective myopia develops when it
>> comes to looking at different ways of doing things. Having worked with fairly
>> diverse systems in my time, ISTM that sections of the Python community have
>> this myopia too. For example, the Java hatred and PEP 8 zealotry that you see
>> here and there.
>> 
>> One of the things that's puzzled me, for example, is why people think it's 
>> reasonable
>> or even necessary to have copies of pip and setuptools in every virtual 
>> environment
>> - often the same people who will tell you that your code isn't DRY enough! 
>> It's
>> certainly not a technical requirement, yet one of the reasons why PEP 405 
>> venvs
>> aren't that popular is that pip and setuptools aren't automatically put in 
>> there. It's a
>> social issue - it's been decided that rather than exploring a technical 
>> approach to
>> addressing any issue with installing into venvs, it's better to bundle pip 
>> and setuptools
>> with Python 3.4, since that will seemingly be easier for people to swallow 
>> :-)
> 
> FWIW, installing into a venv from outside it works fine (that's how
> ensurepip works in 3.4). However, it's substantially *harder* to
> explain to people how to use it correctly that way. In theory you
> could change activation so that it also affected the default install
> locations, but the advantage of just having them installed per venv is
> that you're relying more on the builtin Python path machinery rather
> than adding something new. So while it's wasteful of disk space and
> means needing to upgrade them in every virtualenv, it does actually
> categorically eliminate many potential sources of bugs. Doing things
> the way pip and virtualenv do them also meant there was a whole pile
> of design work that *didn't need to be done* to get a functional
> system up and running. Avoiding work by leveraging existing
> capabilities is a time honoured engineering tradition, even when the
> simple way isn't the most elegant way. Consider also the fact that we
> had full virtual machines long before we have usable Linux containers:
> full isolation is actually *easier* than partial isolation, because
> there are fewer places for things to go wrong, and less integration
> work to do in the first place.
> 
> That said, something I mentioned to the OpenStack folks a while ago
> (and I think on this list, but potentially not), is that I have now
> realised the much-reviled (for good reason) *.pth files actually have
> a legitimate use case in allowing API compatible versions of packages
> to be shared between multiple virtual environments - you can trade
> reduced isolation for easier upgrades on systems containing multiple
> virtual environments by adding a suitable *.pth file to the venv
> rather than the package itself. While there's currently no convenient
> tooling around that, they're a feature CPython has supported for as
> long as I can remember, so tools built on that idea would comfortably
> work on all commonly supported Python versions.

In all but a tiny number of cases, you could use a symlink for this. Much less 
magic :-)

--Noah

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to