Platform independent code?
Larry Bates
larry.bates at websafe.com`
Sat Jun 14 10:36:48 EDT 2008
saneman wrote:
> I have read that Python is a platform independent language. But on this
> page:
>
> http://docs.python.org/tut/node4.html#SECTION004220000000000000000
>
> it seems that making a python script executable is platform dependant:
>
> 2.2.2 Executable Python Scripts
> On BSD'ish Unix systems, Python scripts can be made directly executable,
> like shell scripts, by putting the line
>
>
> #! /usr/bin/env python
> (assuming that the interpreter is on the user's PATH) at the beginning of
> the script and giving the file an executable mode. The "#!" must be the
> first two characters of the file. On some platforms, this first line must
> end with a Unix-style line ending ("\n"), not a Mac OS ("\r") or Windows
> ("\r\n") line ending. Note that the hash, or pound, character, "#", is used
> to start a comment in Python.
>
> The script can be given an executable mode, or permission, using the chmod
> command:
>
>
> $ chmod +x myscript.py
>
>
>
> Are there any guidelines (API'S) that gurantees that the python code will be
> platform independent?
>
>
Generally you have to stay away from platform "dependent" constructs. Esamples:
1) Use os.path methods everywhere in your code so you won't need to worry about
os.path.sep (slash or backslash).
2) Use lowest common denominator when naming files to make your scripts work
cross platform.
3) Stay away from os-specific calls/interfaces when possible. Manipulating file
permissions, etc is always os-specific.
4) Use config files instead of relying on registry in Windows.
5) Stay away from code that depends on 32/64 bit objects or endian-ness of
storage (struct objects). This is machine specific not OS specific but still
counts.
6) If you have GUI, use something like wxWindows which provides cross platform
GUI support.
7) Be careful using non-Python libraries (C-libraries) should be done with care
to make sure that the library is available for all target operating systems.
8) using os.system or the subsystem module must be done with much care and
probably won't be cross platform compatible.
Hope the suggestions help.
-Larry
More information about the Python-list
mailing list