Intra-package References?? (again)

Ron Adam rrr at ronadam.com
Tue Jan 29 10:10:37 EST 2008



marcroy.olsen at gmail.com wrote:
> Hi Python list,
> 
> I have been struggleling with this before, but have never been able to
> find a good solution.
> The thing I dont understand is, I follow the guide here:
> http://docs.python.org/tut/node8.html#SECTION008420000000000000000
> And have the same setup as the packages howto here:http://
> docs.python.org/tut/node8.html#SECTION008400000000000000000
> 
> But when I want to use Intra-package References, I need to put the
> path to the packages explicit like this:
> #sys.path.append('/path/to/pack/')
> Before I can make import like this:
> #from Sound.Effects import echo
> from within the karaoke.py (just to stay with the tut)
> If I print the sys.path from the same file, I can see that
> #/path/to/pack/Sound/Filters/
> is in the path.
> 
> Is there something that I completely is missing or could someone
> please show me how, by example, how I use Intra-package References.
> 
> Best regards
> 
> Marc

If your package is in pythons path, all it should need is an empty 
__init__.py file in the package and also in the sub package Filters also.


If your program is a stand alone program that may be installed someplace 
not in pythons sys.path, then I've been using a some what different model. 
  I'm not sure what others think of it yet, but it's working well for me.

        [karoki_program_dir]   (may not be in pythons sys.path)
            karoki.py
            [lib]
                [tests]
                    __init__.py
                    (unit tests here)
                [filters]
                    __init__.py
                    (various filters here)
                (other local modules/packages here)

And in karoki.py add the local lib directory to the front of sys.path 
before your local module imports.

      lib = os.path.abspath(os.path.join(__file__, '..', 'lib'))
      sys.path.insert(0, lib)


This also makes sure it's the program location path, and not the current 
console directory.


For running tests, I use a command line option.

     python karoki.py --test


Cheers,
    Ron












More information about the Python-list mailing list