Ka-Ping wrote: > On Wed, 7 Jun 2000, Andy Robinson wrote: > > We hit some very weird behaviour recently while setting up a > > package hierarchy. Robin Becker managed to distil this into a > > simple example. Can anyone shed any light on what is happening > > below? Is Python behaving as it should? [snip entirely correct analysis] > The solution is to avoid directly running scripts that are > inside packages; the confusion is produced by the fact that > you're running "test.py" from within the A/ directory. I disagree with the moral. If test.py uses "import A.parent" and changes references accordingly, it works. So my version of the moral is that import * is EVIL. Not only that, but relative imports are EVIL. This is what I meant when I said (in reply to Greg Wilson's inquiry about package structures) that there are some very bad precedents getting set. Doing this junk (usually in __init__.py) not only makes your package fragile, it also makes the package structure mysterious to the user (who's a developer - making things mysterious to him/her is just making both your lives harder!). If you want to make it friendly to lazy coders, then something like: import A.parent Parent = A.parent.Parent also works, (leaving references as Parent). I'm not terribly fond of this, either, but at least the coder has a reasonable hope of tracking down what "Parent" actually is. I'm not necessarily yelling at you, Andy. It seems that most package developers are going down this slope. It stinks. - Gordon
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