/Lib/plat-mac/appletrawmain.py
http://unladen-swallow.googlecode.com/ · Python · 67 lines · 32 code · 3 blank · 32 comment · 7 complexity · 552380f1e3f65dcc78f48c5bea729a58 MD5 · raw file
- # Emulate sys.argv and run __main__.py or __main__.pyc in an environment that
- # is as close to "normal" as possible.
- #
- # This script is put into __rawmain__.pyc for applets that need argv
- # emulation, by BuildApplet and friends.
- #
- from warnings import warnpy3k
- warnpy3k("In 3.x, the appletrawmain module is removed.", stacklevel=2)
- import argvemulator
- import os
- import sys
- import marshal
- #
- # Make sure we have an argv[0], and make _dir point to the Resources
- # directory.
- #
- if not sys.argv or sys.argv[0][:1] == '-':
- # Insert our (guessed) name.
- _dir = os.path.split(sys.executable)[0] # removes "python"
- _dir = os.path.split(_dir)[0] # Removes "MacOS"
- _dir = os.path.join(_dir, 'Resources')
- sys.argv.insert(0, '__rawmain__')
- else:
- _dir = os.path.split(sys.argv[0])[0]
- #
- # Add the Resources directory to the path. This is where files installed
- # by BuildApplet.py with the --extra option show up, and if those files are
- # modules this sys.path modification is necessary to be able to import them.
- #
- sys.path.insert(0, _dir)
- #
- # Create sys.argv
- #
- argvemulator.ArgvCollector().mainloop()
- #
- # Find the real main program to run
- #
- __file__ = os.path.join(_dir, '__main__.py')
- if os.path.exists(__file__):
- #
- # Setup something resembling a normal environment and go.
- #
- sys.argv[0] = __file__
- del argvemulator, os, sys, _dir
- execfile(__file__)
- else:
- __file__ = os.path.join(_dir, '__main__.pyc')
- if os.path.exists(__file__):
- #
- # If we have only a .pyc file we read the code object from that
- #
- sys.argv[0] = __file__
- _fp = open(__file__, 'rb')
- _fp.read(8)
- __code__ = marshal.load(_fp)
- #
- # Again, we create an almost-normal environment (only __code__ is
- # funny) and go.
- #
- del argvemulator, os, sys, marshal, _dir, _fp
- exec __code__
- else:
- sys.stderr.write("%s: neither __main__.py nor __main__.pyc found\n"%sys.argv[0])
- sys.exit(1)