[Distutils] Parallel installation of incompatible versions

Nick Coghlan ncoghlan at gmail.com
Wed Mar 20 15:35:04 CET 2013


On Wed, Mar 20, 2013 at 6:58 AM, Daniel Holth <dholth at gmail.com> wrote:
>>> Like with pkg_resources, developers are warned to only "require Gems"
>>> on things that are *not* imported (preferably in the equivalent of
>>> our
>>> console_scripts wrappers). Otherwise you get an unwanted Gem
>>> dependency if you ever tried to use the same gem outside of the gem
>>> system.
>>>
>>
>> I don't really know what you mean by this - could you please reword it?
>
> There should be only one call to the linker, at the very top of
> execution. Otherwise in this pseudo-language example you can't use
> foobar without also using the requires system:
>
> myscript:
> requires(a, b, c)
> import foobar
> run()
>
> foobar:
> requires(c, d) # No!

RIght, version control and runtime access should be separate steps. In
a virtual environment, you shouldn't need runtime checks at all - all
the version compatibility checks should be carried out when creating
the environment.

Similarly, when a distro defines their site-packages contents, they're
creating an integrated set of interlocking requirements, all designed
to work together. Only when they need multiple mutually incompatible
versions installed should the versioning system be needed. Assuming we
go this way, distros will presumably install system Python packages
into the versioned layout and then symlink them appropriately from the
"available by default" layout in site-packages.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia


More information about the Distutils-SIG mailing list