mirror of
https://github.com/python/cpython.git
synced 2025-07-23 19:25:40 +00:00
Updated.
This commit is contained in:
parent
c30d7c37ee
commit
7c0d7ba99d
1 changed files with 33 additions and 41 deletions
|
@ -1,8 +1,8 @@
|
||||||
Building and using a framework-based Python on Mac OS X.
|
Building and using a framework-based Python on Mac OS X.
|
||||||
--------------------------------------------------------
|
--------------------------------------------------------
|
||||||
|
|
||||||
This document provides a quick introduction to framework-based Python.
|
This document provides a quick introduction to framework-based Python, its
|
||||||
It is rather terse and probably incomplete, please send me feedback.
|
advantages, and how to build it.
|
||||||
|
|
||||||
1. Why would I want a framework Python in stead of a normal static Python?
|
1. Why would I want a framework Python in stead of a normal static Python?
|
||||||
--------------------------------------------------------------------------
|
--------------------------------------------------------------------------
|
||||||
|
@ -15,12 +15,16 @@ While it is technically possible to create a .app without using frameworks you
|
||||||
will have to do the work yourself if you really want this.
|
will have to do the work yourself if you really want this.
|
||||||
|
|
||||||
A second reason for using frameworks is that they put Python-related items in
|
A second reason for using frameworks is that they put Python-related items in
|
||||||
only two places: /Library/Framework/Python.framework and /Applications/Python.
|
only two places: /Library/Framework/Python.framework and /Applications/MacPython-2.3.
|
||||||
This simplifies matters for users installing Python from a binary distribution
|
This simplifies matters for users installing Python from a binary distribution
|
||||||
if they want to get rid of it again. Moreover, due to the way frameworks work
|
if they want to get rid of it again. Moreover, due to the way frameworks work
|
||||||
a user without admin privileges can install a binary distribution in his or
|
a user without admin privileges can install a binary distribution in his or
|
||||||
her home directory without recompilation.
|
her home directory without recompilation.
|
||||||
|
|
||||||
|
Incidentally, the procedure described here is also the procedure that is
|
||||||
|
used to create the MacPython binary installer, so the information here
|
||||||
|
should theoretically allow you to rebuild that.
|
||||||
|
|
||||||
2. How does a framework Python differ from a normal static Python?
|
2. How does a framework Python differ from a normal static Python?
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -51,7 +55,7 @@ information.
|
||||||
|
|
||||||
This directory contains a Makefile that will create a couple of python-related
|
This directory contains a Makefile that will create a couple of python-related
|
||||||
applications (fullblown OSX .app applications, that is) in
|
applications (fullblown OSX .app applications, that is) in
|
||||||
/Applications/Python, and a hidden helper application Python.app inside the
|
/Applications/MacPython-2.3, and a hidden helper application Python.app inside the
|
||||||
Python.framework, and unix tools "python" and "pythonw" into /usr/local/bin.
|
Python.framework, and unix tools "python" and "pythonw" into /usr/local/bin.
|
||||||
In addition it has a target "installmacsubtree" that installs the relevant
|
In addition it has a target "installmacsubtree" that installs the relevant
|
||||||
portions of the Mac subtree into the Python.framework.
|
portions of the Mac subtree into the Python.framework.
|
||||||
|
@ -65,10 +69,10 @@ in the sequence
|
||||||
This sequence will put the framework in /Library/Framework/Python.framework,
|
This sequence will put the framework in /Library/Framework/Python.framework,
|
||||||
the applications in /Applications/Python and the unix tools in /usr/local/bin.
|
the applications in /Applications/Python and the unix tools in /usr/local/bin.
|
||||||
|
|
||||||
Building in another place, for instance $HOME/Library/Frameworks if you have
|
Installing in another place, for instance $HOME/Library/Frameworks if you have
|
||||||
no admin privileges on your machine, has only been tested very lightly. This
|
no admin privileges on your machine, has only been tested very lightly. This
|
||||||
can be done by configuring with --enable-framework=$HOME/Library/Frameworks.
|
can be done by configuring with --enable-framework=$HOME/Library/Frameworks.
|
||||||
The other two directories, /Applications/Python and /usr/local/bin, will then
|
The other two directories, /Applications/MacPython-2.3 and /usr/local/bin, will then
|
||||||
also be deposited in $HOME. This is sub-optimal for the unix tools, which you
|
also be deposited in $HOME. This is sub-optimal for the unix tools, which you
|
||||||
would want in $HOME/bin, but there is no easy way to fix this right now.
|
would want in $HOME/bin, but there is no easy way to fix this right now.
|
||||||
|
|
||||||
|
@ -81,6 +85,10 @@ If you want to install some part, but not all, read the main Makefile. The
|
||||||
frameworkinstall is composed of a couple of sub-targets that install the
|
frameworkinstall is composed of a couple of sub-targets that install the
|
||||||
framework itself, the Mac subtree, the applications and the unix tools.
|
framework itself, the Mac subtree, the applications and the unix tools.
|
||||||
|
|
||||||
|
There is an extra target frameworkinstallextras that is not part of the
|
||||||
|
normal frameworkinstall which installs the Demo and Tools directories
|
||||||
|
into /Applications/MacPython-2.3, this is useful for binary distributions.
|
||||||
|
|
||||||
If you want to run the Makefile here directly, in stead of through the main
|
If you want to run the Makefile here directly, in stead of through the main
|
||||||
Makefile, you will have to pass various variable-assignments. Read the
|
Makefile, you will have to pass various variable-assignments. Read the
|
||||||
beginning of the Makefile for details.
|
beginning of the Makefile for details.
|
||||||
|
@ -111,44 +119,28 @@ non-GUI and GUI python scripts from the command line, respectively.
|
||||||
6. How do I create a binary distribution?
|
6. How do I create a binary distribution?
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
|
|
||||||
Note: this section is work-in-progress.
|
Go to the Mac/OSX/Dist directory. There you find a script "build" that
|
||||||
|
does all the work: it configures and builds a framework Python, installs
|
||||||
|
it, creates the installer package file and packs this in a DMG image.
|
||||||
|
|
||||||
First, to make sure there's no contamination, it is best to remove your
|
All of this is normally done completely isolated in /tmp/_py, so it does not
|
||||||
existing Python installation (clear out /Library/Frameworks/Python.framework
|
use your normal build directory nor does it install into /.
|
||||||
and /Applications/Python). Also, after build/install is finished check that
|
|
||||||
nothing has shown up in those two locations.
|
|
||||||
|
|
||||||
Create a subdirectory of the main python directory, say build-pythondist. In
|
Because the build script locates the Python source tree relative to its own
|
||||||
there, run
|
pathname you may have to run it with a full pathname. If you are debugging your
|
||||||
../configure --enable-framework=/tmp/pythondist/Library/Frameworks \
|
install you can pass one argument: the pathname where the build directory
|
||||||
LDFLAGS=-Wl,-x
|
is located (i.e. where configure and make will be run), then this directory
|
||||||
make
|
will be saved between runs of the build script. Do *not* specify your normal
|
||||||
make frameworkinstall
|
build directory here.
|
||||||
This installs a complete distribution set in /tmp/pythondist: in a framework
|
|
||||||
build all other pathnames are computed from the framework pathname.
|
|
||||||
|
|
||||||
Optionally you may want to include the full documentation in the binary installer.
|
build will ask you whether you have updated the readme file, and it will offer
|
||||||
To this end, execute the following commands:
|
to include the full documentation in the installer. That option has not
|
||||||
python.exe ../Mac/OSX/setupDocs.py build
|
been used for a while, and it may not work.
|
||||||
python.exe ../Mac/OSX/setupDocs.py install \
|
|
||||||
--prefix=/tmp/python/Library/Frameworks/Python.framework/Versions/Current
|
|
||||||
|
|
||||||
Note that the unix tools in /tmp/pythondist are wrong, these have to be
|
|
||||||
removed, and the installer post-install script should recreate them on the
|
|
||||||
target system. Also, the .pyc and .pyo files need to be removed:
|
|
||||||
rm -rf /tmp/pythondist/usr
|
|
||||||
python.exe ../Mac/script/zappycfiles.py /tmp/pythondist
|
|
||||||
|
|
||||||
Finally, create the .pkg file with a commandline like
|
If you need to execute code on the client machine after installing Python
|
||||||
python ../Mac/scripts/buildpkg.py \
|
you can add this to resources/postflight. If you need to do even stranger things
|
||||||
--Title=MacPython-X \
|
you have to read Apple's documentation on PackageMaker and read the source
|
||||||
--Version=2.3a0 \
|
of Mac/scripts/buildpkg.py.
|
||||||
--Description="Python for Mac OS X, framework based" \
|
|
||||||
/tmp/pythondist
|
|
||||||
This creates a MacPython-X.pkg in the current directory.
|
|
||||||
|
|
||||||
TBD: provide postinstall scripts to precompile .pyc/.pyo files, and to recreate
|
|
||||||
the unix programs.
|
|
||||||
|
|
||||||
7. Odds and ends.
|
7. Odds and ends.
|
||||||
-----------------
|
-----------------
|
||||||
|
@ -164,4 +156,4 @@ macresource module and the Mac/OSX/Makefile cater for this, and create
|
||||||
".rsrc.df.rsrc" files on the fly that are normal datafork-based resource
|
".rsrc.df.rsrc" files on the fly that are normal datafork-based resource
|
||||||
files.
|
files.
|
||||||
|
|
||||||
Jack Jansen, jack@oratrix.com, 06-Sep-02
|
Jack Jansen, Jack.Jansen@cwi.nl, 20-Jun-2003.
|
Loading…
Add table
Add a link
Reference in a new issue