Python Language FAQ - Section 7

Markus Fleck python-announce@python.org
Wed, 07 Jul 99 23:27:55 GMT


This FAQ newsgroup posting has been automatically converted from an
HTML snapshot of the original Python FAQ; please refer to the original
"Python FAQ Wizard" at <http://grail.cnri.reston.va.us/cgi-bin/faqw.py>
if source code snippets given in this document do not work - incidentally
some formatting information may have been lost during the conversion.

----------------------------------------------------------------------------

The whole Python FAQ - Section 7

Last changed on Mon Jun 28 19:36:09 1999 EDT

(Entries marked with ** were changed within the last 24 hours; entries
marked with * were changed within the last 7 days.)

----------------------------------------------------------------------------

7. Using Python on non-UNIX platforms

7.1.  Is there a Mac version of Python?
7.2.  Are there DOS and Windows versions of Python?
7.3.  Is there an OS/2 version of Python?
7.4.  Is there a VMS version of Python?
7.5.  What about IBM mainframes, or other non-UNIX platforms?
7.6.  Where are the source or Makefiles for the non-UNIX versions?
7.7.  What is the status and support for the non-UNIX versions?
7.8.  I have a PC version but it appears to be only a binary. Where's
      the library?
7.9.  Where's the documentation for the Mac or PC version?
7.10. How do I create a Python program file on the Mac or PC?
7.11. How can I use Tkinter on Windows 95/NT?
7.12. cgi.py (or other CGI programming) doesn't work sometimes on NT or
      win95!
7.13. Why doesn't os.popen() work in PythonWin on NT?
7.14. How do I use different functionality on different platforms with
      the same program?
7.15. Is there an Amiga version of Python?
7.16. Why doesn't os.popen()/win32pipe.popen() work on Win9x?

----------------------------------------------------------------------------

7. Using Python on non-UNIX platforms

----------------------------------------------------------------------------

7.1. Is there a Mac version of Python?

Yes, see the "mac" subdirectory of the distribution sites, e.g.
ftp://ftp.python.org/pub/python/mac/.

----------------------------------------------------------------------------

7.2. Are there DOS and Windows versions of Python?

Yes. The core windows binaries are available from
http://www.python.org/windows/. There is a plethora of Windows extensions
available, including a large number of not-always-compatible GUI toolkits.
The core binaries include the standard Tkinter GUI extension.

Most windows extensions can be found (or referenced) at
http://www.python.org/windows/

Windows 3.1/DOS support seems to have dropped off recently. You may need to
settle for an old version of Python one these platforms. One such port is
WPY

WPY: Ports to DOS, Windows 3.1(1), Windows 95, Windows NT and OS/2. Also
contains a GUI package that offers portability between Windows (not DOS) and
Unix, and native look and feel on both.
ftp://ftp.python.org/pub/python/wpy/.

----------------------------------------------------------------------------

7.3. Is there an OS/2 version of Python?

Yes, see the "pc" and "wpy" subdirectory of the distribution sites (see
above).

----------------------------------------------------------------------------

7.4. Is there a VMS version of Python?

Yes, there is a port of Python 1.4 to OpenVMS and a few ports of 1.2 to VMS.
See ftp://ftp.python.org/pub/python/contrib/Porting/vms/.

Uwe Zessin has ported Python 1.5.x to OpenVMS. See
http://decus.decus.de/~zessin/.

----------------------------------------------------------------------------

7.5. What about IBM mainframes, or other non-UNIX platforms?

I haven't heard about these, except I remember hearing about an OS/9 port
and a port to Vxworks (both operating systems for embedded systems). If
you're interested in any of this, go directly to the newsgroup and ask
there, you may find exactly what you need. For example, a port to MPE/iX 5.0
on HP3000 computers was just announced, see
http://www.allegro.com/software/.

----------------------------------------------------------------------------

7.6. Where are the source or Makefiles for the non-UNIX versions?

The standard sources can (almost) be used. Additional sources can be found
in the platform-specific subdirectories of the distribution.

----------------------------------------------------------------------------

7.7. What is the status and support for the non-UNIX versions?

I don't have access to most of these platforms, so in general I am dependent
on material submitted by volunteers. However I strive to integrate all
changes needed to get it to compile on a particular platform back into the
standard sources, so porting of the next version to the various non-UNIX
platforms should be easy.

----------------------------------------------------------------------------

7.8. I have a PC version but it appears to be only a binary. Where's the
library?

If you are running any version of Windows, then you have the wrong
distribution. The FAQ lists current Windows versions. Notably, Pythonwin and
wpy provide fully functional installations.

But if you are sure you have the only distribution with a hope of working on
your system, then...

You still need to copy the files from the distribution directory
"python/Lib" to your system. If you don't have the full distribution, you
can get the file lib<version>.tar.gz from most ftp sites carrying Python;
this is a subset of the distribution containing just those files, e.g.
ftp://ftp.python.org/pub/python/src/lib1.4.tar.gz.

Once you have installed the library, you need to point sys.path to it.
Assuming the library is in C:\misc\python\lib, the following commands will
point your Python interpreter to it (note the doubled backslashes -- you can
also use single forward slashes instead):

            >>> import sys
            >>> sys.path.insert(0, 'C:\\misc\\python\\lib')
            >>>

For a more permanent effect, set the environment variable PYTHONPATH, as
follows (talking to a DOS prompt):

            C> SET PYTHONPATH=C:\misc\python\lib

----------------------------------------------------------------------------

7.9. Where's the documentation for the Mac or PC version?

The documentation for the Unix version also applies to the Mac and PC
versions. Where applicable, differences are indicated in the text.

----------------------------------------------------------------------------

7.10. How do I create a Python program file on the Mac or PC?

Use an external editor. On the Mac, BBEdit seems to be a popular no-frills
text editor. I work like this: start the interpreter; edit a module file
using BBedit; import and test it in the interpreter; edit again in BBedit;
then use the built-in function reload() to re-read the imported module; etc.
In the 1.4 distribution you will find a BBEdit extension that makes life a
little easier: it can tell the interpreter to execute the current window.
See :Mac:Tools:BBPy:README.

Regarding the same question for the PC, Kurt Wm. Hemr writes: "While anyone
with a pulse could certainly figure out how to do the same on MS-Windows, I
would recommend the NotGNU Emacs clone for MS-Windows. Not only can you
easily resave and "reload()" from Python after making changes, but since
WinNot auto-copies to the clipboard any text you select, you can simply
select the entire procedure (function) which you changed in WinNot, switch
to QWPython, and shift-ins to reenter the changed program unit."

If you're using Windows95 or Windows NT, you should also know about
PythonWin, which provides a GUI framework, with an mouse-driven editor, an
object browser, and a GUI-based debugger. See

           http://www.python.org/ftp/python/pythonwin/

for details.

----------------------------------------------------------------------------

7.11. How can I use Tkinter on Windows 95/NT?

Starting from Python 1.5, it's very easy -- just download and install Python
and Tcl/Tk and you're in business. See

      http://www.python.org/download/download_windows.html

One warning: don't attempt to use Tkinter from PythonWin (Mark Hammond's
IDE). Use it from the command line interface (python.exe) or the windowless
interpreter (pythonw.exe).

----------------------------------------------------------------------------

7.12. cgi.py (or other CGI programming) doesn't work sometimes on NT or
win95!

Be sure you have the latest python.exe, that you are using python.exe rather
than a GUI version of python and that you have configured the server to
execute

         "...\python.exe -u ..."

for the cgi execution. The -u (unbuffered) option on NT and win95 prevents
the interpreter from altering newlines in the standard input and output.
Without it post/multipart requests will seem to have the wrong length and
binary (eg, GIF) responses may get garbled (resulting in, eg, a "broken
image").

----------------------------------------------------------------------------

7.13. Why doesn't os.popen() work in PythonWin on NT?

The reason that os.popen() doesn't work from within PythonWin is due to a
bug in Microsoft's C Runtime Library (CRT). The CRT assumes you have a Win32
console attached to the process.

You should use the win32pipe module's popen() instead which doesn't depend
on having an attached Win32 console.

Example:

     import win32pipe
     f = win32pipe.popen('dir /c c:\\')
     print f.readlines()
     f.close()

----------------------------------------------------------------------------

7.14. How do I use different functionality on different platforms with the
same program?

Remember that Python is extremely dynamic and that you can use this dynamism
to configure a program at run-time to use available functionality on
different platforms. For example you can test the sys.platform and import
different modules based on its value.

       import sys
       if sys.platform == "win32":
          import win32pipe
          popen = win32pipe.popen
       else:
          import os
          popen = os.popen

(See FAQ 7.13 for an explanation of why you might want to do something like
this.) Also you can try to import a module and use a fallback if the import
fails:

        try:
             import really_fast_implementation
             choice = really_fast_implementation
        except ImportError:
             import slower_implementation
             choice = slower_implementation

----------------------------------------------------------------------------

7.15. Is there an Amiga version of Python?

Yes. See the AmigaPython homepage at
http://www.bigfoot.com/~irmen/python.html.

----------------------------------------------------------------------------

7.16. Why doesn't os.popen()/win32pipe.popen() work on Win9x?

There is a bug in Win9x that prevents os.popen/win32pipe.popen* from
working. The good news is there is a way to work around this problem. The
Microsoft Knowledge Base article that you need to lookup is: Q150956. You
will find links to the knowledge base at: http://www.microsoft.com/kb.

----------------------------------------------------------------------------

-- 
----------- comp.lang.python.announce (moderated) ----------
Article Submission Address:  python-announce@python.org
Python Language Home Page:   http://www.python.org/
Python Quick Help Index:     http://www.python.org/Help.html
------------------------------------------------------------