ImportError depending on the calling module
Samuel
knipknap at gmail.com
Thu Sep 6 13:41:42 EDT 2007
On Sep 6, 6:44 pm, Gabriel Genellina <gagsl-... at yahoo.com.ar> wrote:
> On 6 sep, 13:13, Samuel <knipk... at gmail.com> wrote:
>
> > On Sep 6, 5:44 pm, Gabriel Genellina <gagsl-... at yahoo.com.ar> wrote:
> > > They should import the package as any other
> > > client code, without doing any import tricks nor playing with
> > > sys.path.
>
> > Why does it matter whether I install it in sys.path or whether
> > sys.path is modified? What's the difference?
>
> Because it's more simple, less error prone, easier to test, more
> efficient...
>
> > What I am doing is I ship two modules in one tarball with my software.
> > The software is only unpacked and ran. It has to work without
> > installation.
>
> That's fine, and a good requirement. Place start2.py inside the
> container directory, and your package beneath it. Then you don't have
> to modify sys.path to find the package - "import packagename" just
> works. And it still works if the user installs the package (into site-
> packages, by example).
>
> start1.py
> start2.py
> packagename/
> |-- Obj.py
> |-- __init__.py
> |-- foo/
> |-- FooTest.py
> `-- __init__.py
>
> Packages are... well, packages, boxes. Don't try to import a module
> inside a package as it were a standalone module
But the start2.py script *is* part of the library. It should be in the
package.
However, I just found that Python 2.5 introduces relative imports.
This sounds like an attempt to remedy the situation.
-Samuel
More information about the Python-list
mailing list