Guido van Rossum wrote: >>How about adding >> >>python.py: >>__path__ = ['.'] >> >>This would not only reserve the name in the global namespace, >>but also enable applications to start using 'from python import x' >>now without much fuzz. > > > Then I have to ask the question I originally wanted to ask: what > problem would that solve? And is this the right solution? It solves the namespace issue. Every time we add a module or package to the standard lib, there is a chance that we break someones code out there by overriding his/her own module/package (e.g. take the addition of the email package -- such generic names tend to be used a lot). Whether it's the right solution depends on how you see it. IMHO it would be ideal to move the complete std lib under a single package. You might want to use a more diverse hierarchy but I don't think that is really needed for the existing code base. Using a single package also makes the transition from non-package imports to python-package imports a lot easier. > Also, it would make *all* standard modules accessible through the > python package -- surely this isn't what we want (not if we use the > Java example at least). Are you sure that you want to make things complicated ? (see above) > Also, for some modules (that keep some global state) it's a bad idea > if they are imported twice, since their initialization code would be > run twice, and there would be two separate instances of the module. That's true for the trick I proposed above since the modules are reachable in two ways with the standard way of writing 'import <stdmod>' being used in tons of code. Now there is also a different way to approach this problem, though: that of directing Python to the right package by providing stubs for all current standard lib modules. I have used such a stub for my mx stuff when I moved everything from top-level to under the 'mx' umbrella: # Redirect all imports to the corresponding mx package def _redirect(mx_subpackage): global __path__ import os,mx __path__ = [os.path.join(mx.__path__[0],mx_subpackage)] _redirect('DateTime') # Now load all important symbols from mx.DateTime import * This works great -- it even let's you load pickles which store the old import names and automagically converts them to the new names. -- Marc-Andre Lemburg CEO eGenix.com Software GmbH _______________________________________________________________________ eGenix.com -- Makers of the Python mx Extensions: mxDateTime,mxODBC,... Python Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4