[Pythonmac-SIG] Re: Newbie path problem
Bob Ippolito
bob at redivi.com
Thu Feb 26 08:38:34 EST 2004
On Feb 26, 2004, at 8:16 AM, Christer Fernstrom wrote:
>> On 25-feb-04, at 23:39, Christer Fernstrom wrote:
>>
>> > I have just ported some of my own python code from os x 10.1 to
>> Python
>> > 2.3 on OSX 10.3 and come upon a problem with the path which would
>> > surprise me if not several others have. One module imports another
>> > module residing in the same directory, which is not on the
>> PYTHONPATH.
>> > This works fine when running from the terminal, and it used to work
>> > fine in my earlier installation also after using BuildApplet to
>> create
>> > an application applet. This does not work in Python 2.3. Instead it
>> > generates an import error.
>> >
>> > Tracing sys.path, I notice that its first two elements are equal:
>> > <scripts-directory>/<scripts-name>.app/Contents/Resources
>>
>> You have to explain this a bit more. You say "One module imports
>> another module residing in the same directory, which is not on the
>> PYTHONPATH". How do you import the first module then, as it is in a
>> directory that also isn't on sys.path?
>>
>> --
>> Jack Jansen, <Jack.Jansen at cwi.nl>, http://www.cwi.nl/~jack
>> If I can't dance I don't want to be part of your revolution -- Emma
>> Goldman
>
> Sorry, I'll try to make it clearer. The first module, Module-A, is the
> main program module. It imports Module-B, which resides in the same
> directory as Module-A. This directory, Directory-D, is not on the
> PYTHONPATH. Using terminal, and positioned in any directory, I can
> successfully invoke Module-A:
> % python Directory-D/Module-A.py <paramters>
> Printing out the value of sys.path tells me that its first element is
> "Directory-D", which explains why the import of Module-B works fine.
>
> The problem occurs when I transform Module-A to an applet, using
> BuildApplet. The import now fails, and looking at the Console window I
> can see that sys.path now prints with a different value, and in
> particular its first two elements are identical. They contain
> "Directory-D/Module-A.app/Contents/Resources". It does not contain
> Directory-D, which explains why the import fails.
>
> I could of course work around this in my code, but it doesn't seem
> very clean to do it that way.
Have you tried copying Module-B into Module-A.app/Contents/Resources ?
Everything you need either needs to be findable from sys.path, or you
will have yourself a location-dependent app (i.e. if you moved
Module-A.app to any other location then it would no longer work).
-bob
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2357 bytes
Desc: not available
Url : http://mail.python.org/pipermail/pythonmac-sig/attachments/20040226/be773adc/smime-0001.bin
More information about the Pythonmac-SIG
mailing list