[Tutor] Problem with converting Python to EXE using py2exe
Dave Angel
davea at ieee.org
Sat Apr 11 13:00:08 CEST 2009
ALAN GAULD wrote:
> > That's a great idea Mr. Gauld!
>> > But I have no idea how to do that...
>> > can you maybe write a small example for a newb like me?? pretty please with cheese on top??
>>
>>>> > > > base = pic(file="base.gif")
>>>> > > >
>>>> > > > Now, I'm just wondering... for the "base.gif" part, would it be better
>>>> > > > to write out the whole directory?
>>>>
>> >
>>
>>> > > No because that requires that your user install the program and
>>> > > other files exactly where you did. Thats not friendly. Instead use
>>> > > a relative path,
>>>
> To use a relative path base = pic(file=root+"/base.gif")
<snip...>
I would get 'root' this way, rather than requiring anything to be set up
by the install (registry, environment vars, config):
root = os.path.dirname(__file__)
or sometimes
root = os.path.dirname(mymodule.__file__) (assuming mymodule is a
successfully imported module)
And then I'd turn the relative path into an absolute with:
os.path.join(root, "base.gif")
I use this technique whenever I need to locate something relative to the
"installed" code, in other words to fetch const data that was copied
with the .py files.
I reserve using install variables to finding things relating to the
choices the user made at install time, which may very well vary per
user. And sometimes that means I can avoid install parameters entirely,
letting the install be simply two steps:
1) unzip the files into an appropriate place (arbitray, and user
chosen, but typically in a subdirectory of c:\program files on Windows).
2) Set up a batch file, shortcut, path string, or file
association to point to the executable(s) in that directory.
(Does anybody think that using __file__ this way is uncool? For
example, should I better use sys.path[0] ? Or something more
convoluted involving sys.modules ?)
More information about the Tutor
mailing list