[Python-Dev] Python install layout and the PATH on win32

Terry Reedy tjreedy at udel.edu
Wed Mar 14 18:55:27 CET 2012


On 3/14/2012 12:10 PM, VanL wrote:
> On 3/14/2012 10:56 AM, Terry Reedy wrote:
>> Are you talking about 'install for all users' versus 'install for this
>> user only'? I have always done the former as I see no point to the
>> latter on my machine, even if another family member has an account.
>
> Yes, but some people are on corporate machines that only allow "install
> for this user" installations.

Ok. On such machines, system install (by vendor) == only 'base' install 
== only 'all user' install.

>>> I am fine with keeping the distinction between
>> > base installs (no py_version)
>>
>> I have no idea what this means. As far as I can remember, each
>> installation of Python x.y (back to 1.3 for me, on DOS) has gone into a
>> pythonxy (no dot) directory, with subdirectories much as Jim J.
>> described.
>
> I am referring to the currently-existing install schemes 'nt' ('install
> for all users') and 'nt-user' ('install for this user only'). The
> *current* layouts are described at
> http://hg.python.org/distutils2/file/2cec52b682a9/distutils2/_backport/sysconfig.cfg:
>
> L57-65:
> [nt]
> stdlib = {base}/Lib
> platstdlib = {base}/Lib
> purelib = {base}/Lib/site-packages
> platlib = {base}/Lib/site-packages
> include = {base}/Include
> platinclude = {base}/Include
> scripts = {base}/Scripts
> data = {base}

Is this from 2.x? Currently, in 3.x, Scripts is tucked inside Tools, so 
it seems to be scripts = {base}/Tools/Scripts
>
> L86-93:
> [nt_user]
> stdlib = {userbase}/Python{py_version_nodot}
> platstdlib = {userbase}/Python{py_version_nodot}
> purelib = {userbase}/Python{py_version_nodot}/site-packages
> platlib = {userbase}/Python{py_version_nodot}/site-packages
> include = {userbase}/Python{py_version_nodot}/Include
> scripts = {userbase}/Scripts
> data = {userbase}
>
> I am proposing that these change to:
>
> [nt]
> stdlib = {base}/lib
> platstdlib = {base}/lib
> purelib = {base}/lib/site-packages
> platlib = {base}/lib/site-packages
> include = {base}/include
> platinclude = {base}/include
> scripts = {base}/bin
> data = {base}
>
> [nt_user]
> stdlib = {userbase}/python{py_version_short}
> platstdlib = {userbase}/python{py_version_short}
> purelib = {userbase}/python{py_version_short}/site-packages
> platlib = {userbase}/python{py_version_short}/site-packages
> include = {userbase}/python{py_version_short}/include
> scripts = {userbase}/bin
> data = {userbase}

OK, now I see where 'base' and 'userbase' come from. This is an area I 
have ignored, so I only have a user view of the result.

> All the other diuectories that Jim talked about would not be affected by
> this proposal.
>
> Does this make it clearer?

Now that we are speaking the same language, yes. Thank you.
Lowercasing 'Include' is fine with me. The only question is how it 
affects tools in the field. Lowercasing 'Lib' would also be fine if 
'libs' were changed to 'libraries' or 'headers' or perhaps even better, 
'_libs', as normal users never have any reason to look therein. Just 
something more easily distinguished from 'lib'. Same comment about tools.

The present installed directory scheme is a hodgepodge of almost all 
caps, initial cap, and no cap. I would not mind more consistency. The 
only directory I regularly look in is Lib, so my main concern is that 
that be visually easy to find with my less than perfect vision.

-- 
Terry Jan Reedy



More information about the Python-Dev mailing list