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