[Python-Dev] PEP about sys.implementation and implementation specific user site directory

Michael Foord fuzzyman at voidspace.org.uk
Sat Oct 10 17:48:58 CEST 2009

Christian Heimes wrote:
> Fellow Python developers!
> In the light of our recent discussion about implementation specific
> information and user site directory I like to start a new PEP. Much to
> my regret I wasn't able to contribute to Python core development over
> the past months. I hope I can find some free time over the next weeks.
> Before I start with the PEP I like to reach consensus over the goal.
> Alternative implementations of our beloved programming languages are
> becoming more important every day. Although IronPython, Jython and PyPy
> are trying hard to get as compatible to CPython as possible there are
> numerous reasons for conditional code. General Python unit tests vs.
> CPython specific unit tests are one reasons, implementation specific
> module search paths are another. At the moment Python has no easy way to
> inspect the implementation besides some code in the platform module.
> I'm proposing two new attributes in the sys module: sys.implementation
> and sys.userdirsuffix.

Why not just sys.implementation as a string? Everything else can 
trivially be deduced from that anyway. What is the use-case for the 
extra information?


> sys.implementation
> ------------------
> (Proposed by Nick, MAL and others.)
> sys.implementation is a PyStructSequence that contains various
> information about the current implementation. Some fields are required
> to be present on every implementation. Implementations may choose to add
> additional fields as they see fit. Some fields like compiler are useful
> for introspection and are already part of sys.version. I like to include
> them for the sake of completeness.
> id (required):
>   lower case identifier, for example "cpython", "ironpython", "jython",
> "pypy"
> name (required):
>   mixed case name of the implementation, for example "CPython",
> "IronPython", "Jython", "PyPy"
> platform (required):
>   platform or language of the implementation, for example "C", ".NET",
> "Java"
> runtime (required):
>   lower case runtime library of the implementation, for example "libc",
> "msvcrt90", "java6", ".net"
> compiler (required):
>   verbose name of the compiler, for example "GCC 4.3.3", "Java
> HotSpot(TM) Client VM (Apple Inc.)", "Mono JIT compiler version 2.0.1"
> ...
> sys.userdirsuffix
> -----------------
> sys.userdirsuffix is an implementation and platform specific string that
> is used to construct the path for the user site directory as explained
> in PEP 370. The string contains the implementation name as well as the
> version number of Python.
> Examples:
>   python2.6 (CPython, Unix)
>   Python26 (CPython, Windows)
>   ironpython2.6 (IronPython, Unix)
>   IronPython26 (IronPython, Windows)
>   ...
> Comments?
> Christian
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk


More information about the Python-Dev mailing list