Gordon McMillan wrote: > > M.-A. Lemburg wrote: > > Guido van Rossum wrote: > > > > > > I'd much rather use absolute package names for anything that's not > > > in the same directory as the current module. > > > > Of course, you could do everything with absolute names, but then > > the package author would dictate the complete absolute path which is > > not always desirable since it can cause name collisions such as > > DateTime in mxDateTime and Zope or Queue in mxQueue (to be released) > > and Mark's win32 stuff. > > I can see your point (although I also believe that authors - Guido > excepted - should come up with collision-free names, probably in a > Java-ish scheme). Agreed. > But I strongly believe that import.c should be left alone, maybe > even to die. There are too many people doing import hooks to > make fiddling with its behavior safe. > > I'm also a strong proponent of Greg's imputil.py scheme, which > makes it a breeze to do import hooks. And my experience > disproves the notion that the import mechanism needs to be in C. If > you don't believe me, try the ZlibArchive stuff (which is cross > platform) from my Win32 installer stuff. You can pack the standard > library into one 475K file, and get a perceptible performance boost. You're probably right in saying that we don't need the code in C. I just wanted to avoid yet another import hook being incompatible with all the other existing hooks. Perhaps we should restart the import discussion all over and come up with a more flexbile 100% compatible framework based on Greg's imputil scheme. Then I could add my hook for the relative imports and be happy ;-) > OTOH, I could see doing a framework of packages, in which case > relative imports might be handy. This seems to work fine: > > def relimp(nm): > rpth = string.split(nm, '/') > tpth = string.split(__name__, '.')[:-1] > for node in rpth: > if node == '..': > del tpth[-1] > else: > tpth.append(node) > #print `tpth` > return __import__(string.join(tpth, '.')) > > b = relimp('../packageA2.b') This is pretty much how my patch works... except that I use the ni.py style '__' pseudo package instead of '../'. -- Marc-Andre Lemburg ______________________________________________________________________ Y2000: 109 days left Business: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/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