Hello,

I'm developing a package. I need user/test/special modules (inside or outside the package) to import given modules from the package, or the whole package or a sub-package. I'm looking for a general solution for this.

For an importing module located inside the package, the obvious solution is to use a relative import. But this does not work (for what reason?) if the importer is not itself imported as element of the package (error: "relative import attempted in non package", or such). Even if it's indeed inside the package, in a dir with an __init__.py. I've found some posts on this bug, but no reason stated, and no solution. For instance, a test module part of a package cannot import what it is intended to test... Same thing for a module that holds its own test suite (and thus indeed needs to be run stand- alone). Note that the package's dir and every subdir hold __init__.py pseudo-modules. Is there a solution I'm overlooking to use relative imports?

Now, for using absolute imports, IIUC the package's dir must be on python's package search path list, meaning sys.path, is that all? I tried to extend sys.path using
* PYTHONPATH
* a custom spir.pth (placed inside /usr/lib/pythonX.Y on Linux)
Both methods fail by me: sys.path still does not hold the package's dir, thus absolute imports fail (error: "no module called...").

One more question: in both cases above, I added *both* the package's proper dir, and the dir above it, eg both /home/me/prog/python & /home/me/prog/python/packname. What's the right one? (the package's top __init__.py is in /home/me/prog/python/packname) In any case, if I manage to add /home/me/prog/python to sys.path, will all packages (each located in a sub-dir from there) be found? Or do I need to add one path per package, even if they're all grouped in a super-dir?

Denis
--
_________________
vita es estrany
spir.wikidot.com

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to