So I followed this py2app tutorial to see if it works better than pyinstaller, with this code
if __name__=="__main__":
print "Hello"
and got similar results
i.e. app closes when I do
open -a HelloTest.app
while it runs fine with
./HelloTest.app/Contents/MacOS/HelloTest
but then this tidbit in the tutorial explains it
When run normally, your application’s stdout
and stderr output will go to the Console logs.
To see them, open the Console application:
$ open -a Console
After examining the console logs, it seems like if I run
open -a MyApplication.app
the app runs in a sandbox and if you open any file to write without specifying absolute path it will fail to create the file
if I run
./MyApplication.app/Contents/MacOS/MyApplication
directly the app can create files in the current directory
So I have to go back and specify the full path while creating files, instead of just assuming it will create in the working directory.