[Pythonmac-SIG] Re: [ANN] PyMacApp - Flexible Executable Stub For Python (v0.2)

Bob Ippolito bob at redivi.com
Fri Mar 5 12:46:35 EST 2004


On Mar 5, 2004, at 12:31 PM, Russell E Owen wrote:

>> On Mar 5, 2004, at 12:19 PM, Russell E. Owen wrote:
>>
>>>  In article <ECFDEB72-6E2B-11D8-90DC-000A95686CD8 at redivi.com>,
>>>   Bob Ippolito <bob at redivi.com> wrote:
>>>
>>>>  ...
>>>>  PyMacApp is a Cocoa executable stub for Python that accomplishes 
>>>> the
>>>>  following
>>>>  goals:
>>>>
>>>>  - A single binary can run on OS X 10.1 or later, with no 
>>>> recompilation
>>>>     required under any circumstance.  Therefore, bundles can be 
>>>> built on
>>>>  systems
>>>>     without Xcode and/or the SDKs installed...
>>>
>>>  Just to confirm or deny...does this mean one can build an 
>>> application
>>>  bundle on Panther with --standalone, incorporate PyMacApp and get an
>>>  application that works under, say, Jaguar? if so, wow! (If not, 
>>> might
>>>  you explain the quoted paragraph in different words?)
>>
>> --standalone with the stock Python 2.3.0 Python that comes with 
>> Panther will NEVER EVER EVER EVER EVER WORK ON JAGUAR.  It was 
>> compiled against things that were not available back then.  Period, 
>> won't work, ever, nomatter what.
>>
>> One could build an application on Panther with a Python 2.3.x that 
>> was *very carefully* built to ensure 10.1+ or 10.2+ compatibility, 
>> but that's beyond the scope of what I'm trying to do right now.  If 
>> you had such a Python environment already, it would work.
>
> Yeah, I rather figured that. That's why I tried to word my question so 
> carefully. So...what is the main point of PyMacApp (if there is one 
> beyond the error reporting), or of at least that first paragraph?

Some of the realistic advantages of the PyMacApp approach (including, 
but not limited to..):

- It makes it reasonable to distribute applications that *do not* 
include Python or extension modules, because you can give a friendly 
error message if it's not there, of if PyObjC is not present.  The 
__error__ script could determine exactly what the user needs, and 
present instructions, or give them the option to go to a webpage with 
instructions.

- In the future, when things are linked properly (possibly soon, 
definitely by 10.4), --semi-standalone applications will be portable 
across python interpreters of the same major version.  This requires a 
linking feature available only in OS X 10.3 and later, and MAY NOT be 
compatible with the vendor Python 2.3.0 (but, in theory, it probably 
will be, so long as the extensions are linked properly).

- In theory, in the near future, you will be able make a working 
"multi-python" --semi-standalone, that includes a different set of 
compiled extensions per-python-version (i.e. MacPython 2.3 for Jaguar, 
and vendor Python 2.3.0 for Panther).  Your bootstrap __main__ would 
have to handle the details of this.  Sort of hard to do in practice, 
because you would need a sort of MetaBundleBuilder that makes multiple 
pythons cooperate in building a single bundle... or maybe just an 
intelligent bundle-merge tool.

-bob




More information about the Pythonmac-SIG mailing list