diff options
Diffstat (limited to 'Mac/Demo/standalone.html')
-rw-r--r-- | Mac/Demo/standalone.html | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Mac/Demo/standalone.html b/Mac/Demo/standalone.html new file mode 100644 index 0000000..70a2587 --- /dev/null +++ b/Mac/Demo/standalone.html @@ -0,0 +1,55 @@ +<HTML><HEAD><TITLE>Creating true standalone applications in Python</TITLE></HEAD> +<BODY> +<H1>Creating true standalone applications in Python</H1> +<HR> +You can use Python to create true standalone macintosh applications: applications +that you can distribute to other people as a single file, without dependencies +on Python being installed, etc. The process is not easy, however, and at the +moment you need a source distribution (and a C development environment, CodeWarrior +most preferred). You should first familiarize yourself with the sections +<a href="building.html">building Python from source</a> and +<a href="example2.html">building applets</a>. <p> + +The application we are going to build will contain a complete interpreter, +plus <code>'PYC '</code> resources for all the Python modules the program uses. +We start by creating a resource file that contains all the modules we need, +in PYC-resource form. There are two ways to do this: +<UL> +<LI> Modify the standard <code>freeze.py</code> module to print the names of +all modules used. Copy these to a single folder, run <code>compileall.py</code> +on that folder and then run <code>PackLibDir.py</code> from the scripts folder +to create the resourcefile. This has one disadvantage: freeze finds the modules +used by parsing your Python code, so modules you don't use (for instance because +they are system-dependent and not used on the mac) are also included. You +may also have problems with dynamically loaded modules. You will also have to rename +your main module to __main__.py. + +<LI> Another way to find the modules used is by option-starting your script +and setting the "interactive mode after script" flag. Exercise every corner of +your program so all your modules have been imported, and when you exit your +program and get back to the interpreter use <code>findmodulefiles.findmodulefiles</code> +to get a list of all modules used. You can now use +<code>findmodulefiles.mkpycresourcefile</code> to create your resourcefile. +</UL> + +Next we create the application project. Copy the <code>PythonStandalone.prj</code> +project, replace <code>macapplication.c</code> by <code>macapplet.c</code> and +replace <code>bundle.rsrc</code> by <code>appletbundle.rsrc</code>. Also +add the PYC resource file you made in the previous step and any other resource +files you need. Set the target output file names (for all three of ppc/68k/fat). +Build your application. <p> + +Finally we have to give the application the right <code>sys.path</code> initialisation. +We do this by dropping the application on <code>EditPythonPrefs</code> and removing +all path components replacing them with a single <code>$(APPLICATION)</code>. You +may have to use ResEdit after this step to remove an "alis" resource from your application, +I am not sure why this is sometimes created. <p> + +If you want to get fancy you may be able to make your application smaller by removing +all unused builtin modules. If you used the findmodulefiles method above to find +your modules you can start a standalone interpreter and use +<code>findmodulefiles.findunusedbuiltins</code> to get the names of all builtin +modules your program doesn't use. You can then create a private copy of +<code>config.c</code> from which you remove all unused modules. + +</BODY></HTML> |