py2exe importing a package not in library.zip

mypetslug at gmail.com mypetslug at gmail.com
Mon Aug 25 14:17:49 EDT 2008


On Aug 20, 4:48 pm, mypets... at gmail.com wrote:
> Hi,
> I'm sorry if this has been asked before, but I can't seem to find an
> answer to this anywhere and so far, trial and error hasn't gotten me
> far either.
>
> Using python 2.4, I've created a testing application.  When the app
> starts up, I do a [code]from tests import *[/code] and it looks at
> the /tests directory and loads up all the tests it finds at that
> time.  This works fine when interpreting the python code directly.
> The problem I'm having is trying to create an executable for
> distribution.
>
> What I'd like to be able to do is to include everything in the
> library.zip *except* the tests directory and then as I (or whoever)
> creates more and more tests, have the ability to simply drop them into
> the directory and the next time the app starts, it'll pick them up.
> However, if I don't include the tests in library.zip, then when I hit
> the [code]from tests import *[/code], it complains "AttributeError:
> 'module' object has no attribute 'test1'" when it gets to the first
> test.  And If I do include the tests in the library.zip, it works with
> the tests that I have now, but then I still can't add any new ones
> without the attribute error unless I regenerate the exe every time.
>
> Basically, it seems like it comes down to importing a package outside
> the library.zip.  So, is there any way to do this with py2exe?  Or
> even another exe creating application?
>
> Thanks,MyPetSlug

Hi Again,
So, someone responded with some tips about paths, so my paths are
correct in the exe and I verified this by printing them out.  So, my
problem is not that, I guess.  And in my original email, I simplified
my scenario because I thought it was a problem with paths.  So, let me
back up a little.

My tests directory actually has several sub-directories, so it's laid
out like this: tests/testCategory1, tests/testCategory2, tests/
testCategory1/subCategory1/test1, and so on.  With potentially
hundreds of tests, I needed some organization.  Anyway, in my tests
directory, I have an __init__.py with " __all__=["testCategory1",
"testCategory2"]" and it's this that the exe keeps choking on.  Even
though I append the path directly above the __all__ via "
sys.path.append(os.path.abspath('') + '\\tests')" and
"sys.path.append(os.path.abspath('') + '\\tests\\testCategory1')" (the
second one just to be safe), when I execute the import *, it still
tells me "AttributeError: 'module' object has no attribute
'testCategory1'"

Again, this works fine when just executing the python code without the
exe.  What am I doing wrong?  Or can anyone even point me to the right
place to possibly find an answer?

Thanks,
MyPetSlug



More information about the Python-list mailing list