Re: Windows question from Mac guy
On Mar 18, 2005, at 1:36 PM, [EMAIL PROTECTED] wrote: Here is code that I use, it works both for the script and the exe: Though that does *not* work on Mac, it *does* work on Windows. Bless you sir! I just put a sys.platform condition in and do it your elegant way for 'win32' and the simple way for 'darwin'. Many thanks! Charles Hartman -- http://mail.python.org/mailman/listinfo/python-list
Re: Windows question from Mac guy
Charles Hartman <[EMAIL PROTECTED]> writes: > I'm sitting here (briefly!) with a Windows machine trying to build a > distributable for my app. I'm using py2exe and Inno Setup. (This is > Apple-framework Python 2.3, wxPython 2.5.3.8.) Everything works! > Except . . . > > My app has a data file, scandictionary.txt, that it needs to load when > it starts up. On Mac it gets stuffed into the app bundle so it's > hidden and there's no problem finding it. On Windows (XP), Inno Setup > is putting it where I expected it to be, in the {app} directory along > with my app's .exe and the various .dlls etc that Python needs. But my > app isn't finding it. The problem may be that the current directory is not the directory where the exe is. You may get the same problem in the unfrozen Python script, depending on how you start it. Here is code that I use, it works both for the script and the exe: import imp, os, sys def main_is_frozen(): return (hasattr(sys, "frozen") or # new py2exe hasattr(sys, "importers") # old py2exe or imp.is_frozen("__main__")) # tools/freeze def get_main_dir(): if main_is_frozen(): return os.path.dirname(sys.executable) return os.path.dirname(sys.argv[0]) Thomas -- http://mail.python.org/mailman/listinfo/python-list
Windows question from Mac guy
I'm sitting here (briefly!) with a Windows machine trying to build a distributable for my app. I'm using py2exe and Inno Setup. (This is Apple-framework Python 2.3, wxPython 2.5.3.8.) Everything works! Except . . . My app has a data file, scandictionary.txt, that it needs to load when it starts up. On Mac it gets stuffed into the app bundle so it's hidden and there's no problem finding it. On Windows (XP), Inno Setup is putting it where I expected it to be, in the {app} directory along with my app's .exe and the various .dlls etc that Python needs. But my app isn't finding it. Here's the code I use for that: TEXTDICTIONARY = 'scandictionary.txt' . . . try: f = open(TEXTDICT, 'rU') except IOError: # dict file has gone astray wildcard = "All files (*.*) | *.*" dlg = wx.FileDialog(None, message="Locate the scandictionary file", defaultDir=os.getcwd(), defaultFile="", wildcard=wildcard, style=wx.OPEN | wx.CHANGE_DIR) if dlg.ShowModal() == wx.ID_OK: f = open(dlg.GetPath()) dlg.Destroy() When it doesn't find the file by itself (why not??), it starts looking down in some godawful place in Common or something, which is likely to baffle a user. (It baffles me, though yes I *can* navigate to the right place.) This is pretty much the same code I use when the user selects "Load text file," and the app goes straight to the right directory (its own directory), where it finds a sample text file I supply. Is os.getcwd() working differently in the two cases? Help help, I'm confused. Any help much appreciated. Charles Hartman Professor of English, Poet in Residence http://cherry.conncoll.edu/cohar http://villex.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list