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