Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Has anyone here tried using the iSeries Python port?

I found http://www.iseriespython.com/, which is a version of Python for the iSeries apparently including some system specific data access classes. I am keen to try this out, but will have to get approval at work to do so. My questions are:

Does the port work well, or are there limits to what the interpreter can handle compared with standard Python implementations?

Does the iSeries database access layer work well, creating usable objects from table definitions?

like image 678
nearly_lunchtime Avatar asked Apr 15 '09 15:04

nearly_lunchtime


3 Answers

From what I have seen so far, it works pretty well. Note that I'm using iSeries Python 2.3.3. The fact that strings are natively EBCDIC can be a problem; it's definitely one of the reasons many third-party packages won't work as-is, even if they are pure Python. (In some cases they can be tweaked and massaged into working with judicious use of encoding and decoding.) Supposedly 2.5 uses ASCII natively, which would in principle improve compatibility, but I have no way to test this because I'm on a too-old version of OS/400.

Partly because of EBCDIC and partly because OS/400 and the QSYS file system are neither Unix-like nor Windows-like, there are some pieces of the standard library that are not implemented or are imperfectly implemented. How badly this would affect you depends on what you're trying to do.

On the plus side, the iSeries-specific features work quite well. It's very easy to work with physical files as well as stream files. Calling CL or RPG programs from Python is fairly painless. On balance, I find iSeries Python to be highly usable and very worthwhile.

Update (2012): A lot of work has gone into iSeries Python since this question was asked. Version 2.7 is now available, meaning it's up-to-date as far as 2.x versions go. A few participants of the forum are reasonably active and provide amazing support. One of them has gotten Django working on the i. As expected, the move to native ASCII strings solves a lot of the EBCDIC problems and greatly increases compatibility with third-party packages. I enthusiastically recommend iSeries Python 2.7 for anyone on V5R3 or later. (I still strongly recommend iSeries Python 2.3.3 for those who are on earlier versions of the operating system.)

Update (2021): Unfortunately, iSeriesPython is no longer maintained, and the old website and forum are gone. You can still get the software from its SourceForge repository, and it is still an amazingly useful and worthwhile asset for those who are stuck on old (pre-7.2) versions of the operating system. For those who are on 7.2 or newer, there is a Python for PASE from IBM, which should be considered the preferred way to run Python on the midrange platform. This version of Python is part of a growing ecosystem of open source software on IBM i.

like image 152
John Y Avatar answered Oct 01 '22 15:10

John Y


It sounds like it is would work as expected. Support for other libraries might be pretty limited, though.

Timothy Prickett talks about some Python ports for the iSeries in this article:

http://www.itjungle.com/tfh/tfh041706-story02.html

Also, some discussion popped up in the Python mailing archives:

http://mail.python.org/pipermail/python-list/2004-January/245276.html

like image 45
Jason Coon Avatar answered Oct 01 '22 14:10

Jason Coon


iSeriesPython is working very well. We are usning it since 2005 (or earlier) in our Development and Production Environments as an utility language, for generating of COBOL source code, generating of PCML interfaces, sending SMS, validating/correcting some data ... etc. With iSeriesPython you can access the iSeries database at 2 ways: using File400 and/or db2 module. You can execute OS/400 commands and you can work with both QSYS.LIB members and IFS stream files. IMHO, iSeries Python is very powerful tool, more better than REXX included with iSeries. Try it!

like image 33
mikrom Avatar answered Oct 01 '22 13:10

mikrom