[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