Fixed a typo in the binary install notes

rewrapped: as usual with my files everything was far wider than 80 chars.
This commit is contained in:
Jack Jansen 2002-09-06 21:00:55 +00:00
parent 3a70e3f9ef
commit 1f74ed8c4c
1 changed files with 71 additions and 65 deletions

View File

@ -7,19 +7,19 @@ It is rather terse and probably incomplete, please send me feedback.
1. Why would I want a framework Python in stead of a normal static Python?
--------------------------------------------------------------------------
The main reason is because you want to create GUI programs in Python. With
the exception of X11/XDarwin-based GUI toolkits it appears that all GUI programs
The main reason is because you want to create GUI programs in Python. With the
exception of X11/XDarwin-based GUI toolkits it appears that all GUI programs
need to be run from a fullblown MacOSX application (a ".app" bundle).
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.
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.
A second reason for using frameworks is that they put Python-related items
in only two places: /Library/Framework/Python.framework and /Applications/Python.
A second reason for using frameworks is that they put Python-related items in
only two places: /Library/Framework/Python.framework and /Applications/Python.
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 a user without admin privileges can install a binary distribution in
his or her home directory without recompilation.
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
her home directory without recompilation.
2. How does a framework Python differ from a normal static Python?
------------------------------------------------------------------
@ -34,14 +34,15 @@ Versions/Current and you will see the familiar bin and lib directories.
----------------------------
Yes, probably. If you want to be able to use the PythonIDE you will need to
get Waste, an all-singing-all-dancing TextEdit replacement, from www.merzwaren.com.
It will unpack into a folder named something like "Waste 2.1 Distribution". Make
a symlink called "waste" to this folder, somewhere beside your Python source
distribution (it can be "../waste", "../../waste", etc).
get Waste, an all-singing-all-dancing TextEdit replacement, from
www.merzwaren.com. It will unpack into a folder named something like "Waste
2.1 Distribution". Make a symlink called "waste" to this folder, somewhere
beside your Python source distribution (it can be "../waste", "../../waste",
etc).
If you want Tkinter support you need to get the OSX AquaTk distribution. If you
want wxPython you need to get that. If you want Cocoa you need to get pyobjc.
Because all these are currently in a state of flux please refer to
If you want Tkinter support you need to get the OSX AquaTk distribution. If
you want wxPython you need to get that. If you want Cocoa you need to get
pyobjc. Because all these are currently in a state of flux please refer to
http://www.cwi.nl/~jack/macpython.html, which should contain pointers to more
information.
@ -49,11 +50,11 @@ information.
-------------------------------------
This directory contains a Makefile that will create a couple of python-related
applications (fullblown OSX .app applications, that is) in /Applications/Python,
and a hidden helper application Python.app inside the Python.framework, and
unix tools "python" and "pythonw" into /usr/local/bin. In addition
it has a target "installmacsubtree" that installs the relevant portions of the
Mac subtree into the Python.framework.
applications (fullblown OSX .app applications, that is) in
/Applications/Python, and a hidden helper application Python.app inside the
Python.framework, and unix tools "python" and "pythonw" into /usr/local/bin.
In addition it has a target "installmacsubtree" that installs the relevant
portions of the Mac subtree into the Python.framework.
It is normally invoked indirectly through the main Makefile, as the last step
in the sequence
@ -61,28 +62,28 @@ in the sequence
2. make
3. make frameworkinstall
This sequence will put the framework in /Library/Framework/Python.framework,
the applications in /Applications/Python and the unix tools in /usr/local/bin.
This sequence will put the framework in /Library/Framework/Python.framework,
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 no
admin privileges on your machine, has only been tested very lightly. This can be done
by configuring with --enable-framework=$HOME/Library/Frameworks. The other two
directories, /Applications/Python and /usr/local/bin, will then 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.
Building in another place, for instance $HOME/Library/Frameworks if you have
no admin privileges on your machine, has only been tested very lightly. This
can be done by configuring with --enable-framework=$HOME/Library/Frameworks.
The other two directories, /Applications/Python and /usr/local/bin, will then
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.
Note that there are no references to the actual locations in the code or resource
files, so you are free to move things around afterwards. For example, you could
use --enable-framework=/tmp/newversion/Library/Frameworks and use /tmp/newversion
as the basis for an installer or something.
Note that there are no references to the actual locations in the code or
resource files, so you are free to move things around afterwards. For example,
you could use --enable-framework=/tmp/newversion/Library/Frameworks and use
/tmp/newversion as the basis for an installer or something.
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 framework
itself, the Mac subtree, the applications and the unix tools.
frameworkinstall is composed of a couple of sub-targets that install the
framework itself, the Mac subtree, the applications and the unix tools.
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 beginning of the Makefile
for details.
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
beginning of the Makefile for details.
5. What do all these programs do?
@ -93,39 +94,42 @@ debugger, etc.
PythonLauncher.app is a helper application that will handle things when you
double-click a .py, .pyc or .pyw file. For the first two it creates a Terminal
window and runs the scripts with the normal command-line Python. For the latter
it runs the script in the Python.app interpreter so the script can do GUI-things.
Keep the "alt" key depressed while dragging or double-clicking a script to set
runtime options. These options can be set once and for all through PythonLauncher's
preferences dialog.
window and runs the scripts with the normal command-line Python. For the
latter it runs the script in the Python.app interpreter so the script can do
GUI-things. Keep the "alt" key depressed while dragging or double-clicking a
script to set runtime options. These options can be set once and for all
through PythonLauncher's preferences dialog.
BuildApplet.app creates an applet from a Python script. Drop the script on it
and out comes a full-featured MacOS application. There is much more to this, to
be supplied later. Some useful (but outdated) info can be found in Mac/Demo.
and out comes a full-featured MacOS application. There is much more to this,
to be supplied later. Some useful (but outdated) info can be found in
Mac/Demo.
The commandline scripts /usr/local/bin/python and pythonw
can be used to run non-GUI and GUI python scripts from the command line, respectively.
The commandline scripts /usr/local/bin/python and pythonw can be used to run
non-GUI and GUI python scripts from the command line, respectively.
6. How do I create a binary distribution?
-----------------------------------------
Note: this section is work-in-progress.
First, to make sure there's no contamination, it is best to remove your existing Python
installation (clear out /Library/Frameworks/Python.framework and /Applications/Python).
Also, after build/install is finished check that nothing has shown up in those two locations.
First, to make sure there's no contamination, it is best to remove your
existing Python installation (clear out /Library/Frameworks/Python.framework
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 there, run
../configure --enable-framework=/tmp/pythondist/Library/Frameworks/Python.framework \
Create a subdirectory of the main python directory, say build-pythondist. In
there, run
../configure --enable-framework=/tmp/pythondist/Library/Frameworks \
LDFLAGS=-Wl,-x
make
make frameworkinstall
This installs a complete distribution set in /tmp/pythondist: in a framework build all other
pathnames are computed from the framework pathname.
This installs a complete distribution set in /tmp/pythondist: in a framework
build all other pathnames are computed from the framework pathname.
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:
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
@ -136,13 +140,15 @@ TBD: documentation.
7. Odds and ends.
-----------------
The PythonLauncher is actually an Objective C Cocoa app built with Project Builder.
It could be a Python program, except for the fact that pyobjc is not a part of
the core distribution, and is not completely finished yet as of this writing.
The PythonLauncher is actually an Objective C Cocoa app built with Project
Builder. It could be a Python program, except for the fact that pyobjc is not
a part of the core distribution, and is not completely finished yet as of this
writing.
Something to take note of is that the ".rsrc" files in the distribution are not
actually resource files, they're AppleSingle encoded resource files. The 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 files.
Something to take note of is that the ".rsrc" files in the distribution are
not actually resource files, they're AppleSingle encoded resource files. The
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
files.
Jack Jansen, jack@oratrix.com, 12-Aug-02
Jack Jansen, jack@oratrix.com, 06-Sep-02