[Python-Dev] Change PEP 399 import recommendation
Oscar Benjamin
oscar.j.benjamin at gmail.com
Sun Oct 13 18:35:59 CEST 2013
On 12 October 2013 17:55, Christian Heimes <christian at python.org> wrote:
> Am 12.10.2013 17:37, schrieb Nick Coghlan:
>> I think the default recommendation in PEP 399 still makes sense - 2
>> modules are easy to manage than three and the idiom allows for easy
>> partial replacement.
>
> We could ues yet another approach and put the pure Python implementation
> of modules into another directory (e.g. Lib/pystdlib or Lib/purepython).
> This directory is appended to sys.path. Alternative implementations of
> Python or platforms without the necessary bits and pieces would import
> the Python-only version from that directory. C modules can be renamed so
> CPython picks them up in favor of the pure Python modules. No hacks, no
> facade module, no slow down and it's easy to understand, too.
>
> The approach can be used for stat, operator, decimal and perhaps other
> modules, too.
CPython preferentially imports extension modules over .py modules with
the same name. This is what happens when you use Cython in "pure"
mode: You have a pure mod.py file and an "augmenting" mod.pxd that
contains the annotations relevant to Cython. The resulting extension
module is mod.{pyd,so} and is imported by CPython if present. This way
you don't need an additional directory/module.
Oscar
More information about the Python-Dev
mailing list