[HOME]
| LastModified: | Sun Mar 23 13:31:02 JST 2008 |
|---|
IronPythonはMAC OS X Panther (10.3) + Mono 1.2.9_5 Framework - Universalで動きます. Mono をインストールしたらipyコマンドがインストールされて準備完了です.
Monoに含まれるipyコマンド:
$ type ipy ipy is hashed (/usr/bin/ipy) $ cat /usr/bin/ipy #!/bin/sh exec /Library/Frameworks/Mono.framework/Versions/1.9/bin/mono /Library/Frameworks/Mono.framework/Versions/1.9/lib/IPCE/ipy/ipy.exe "$@" $ ipy IronPython 1.1 (1.1) on .NET 2.0.50727.42 Copyright (c) Microsoft Corporation. All rights reserved. >>>
ただし,IronPythonのバージョンが1.1のままです. それで,最新のIronPython1.1.1のソースを IronPython - Home からダウンロードしましょう. Srcの中のmakfileをCSC=cscからCSC=gmcsと変更すればビルドできます.
インタラクティブセッションで使うとき,文字の修正はcontrol+Hを使用します.
インタラクティブセッションを終了するにはimport sysをいれ,sys.exit()で終了します.
$ uname -a
Darwin hagi.local 7.9.0 Darwin Kernel Version 7.9.0: Wed Mar 30 20:11:17 PST 2005; root:xnu/xnu-517.12.7.obj~1/RELEASE_PPC Power Macintosh powerpc
$ pwd
/Users/zgzg/IronPython-1.1.1
$ ls
Doc/ IronPython.dll* License.html Src/ ipyw.exe*
FAQ.html Lib/ Mapack.dll* Tutorial/
IronMath.dll* License.Rtf Readme.html ipy.exe*
$ mono --version
Mono JIT compiler version 1.9 (tarball)
Copyright (C) 2002-2007 Novell, Inc and Contributors. www.mono-project.com
TLS: normal
GC: Included Boehm (with typed GC)
SIGSEGV: normal
Notification: Thread + polling
Architecture: ppc
Disabled: none
$ mono ipy.exe
IronPython 1.1.1 (1.1.1) on .NET 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
>>> import sys
>>> sys.path
['/Users/zgzg/IronPython-1.1.1', '/Users/zgzg/IronPython-1.1.1/Lib']
>>> sys.path.append('/Users/zgzg/IronPython-1.1.1/Tutorial')
>>> import first
>>> first.factorial(19)
121645100408832000L
>>> import clr
>>> clr.AddReferenceToFile("Mapack.dll")
>>> from Mapack import *
>>> m = Matrix(2,2,1.2)
>>> N = Matrix(2,1)
>>> N[0,0]=4
>>> print m*N
4.8
0
>>> print N.Transpose()*m
4.8 0
>>> print m*3
3.6 0
0 3.6
>>> print N + -N
0
0
>>> sys.platform
'cli'
>>> import System
>>> System.Environment.OSVersion.ToString()
'Unix 7.9.0.0'
>>> System.Environment.OSVersion.Platform.ToString()
'Unix'
>>> System.Environment.GetCommandLineArgs()[0]
'/Users/zgzg/IronPython-1.1.1/ipy.exe'
>>> vars = System.Environment.GetEnvironmentVariables()
>>> for var in vars:
... print var.Key,":",var.Value
...
MANPATH : /usr/share/man:/usr/local/man:/usr/local/share/man:/usr/X11R6/man:/Users/zgzg/man
(snip)
>>> System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion()
'V2.0.50727'
>>> System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
'/Library/Frameworks/Mono.framework/Versions/1.2.6/lib/mono/2.0'
>>> System.Runtime.InteropServices.RuntimeEnvironment.SystemConfigurationFile
'/Library/Frameworks/Mono.framework/Versions/1.2.6/etc/mono/2.0/machine.config'
>>> System.DateTime.Now.ToString()
'02/03/2008 15:44:45'
>>> System.IO.File.Exists("tmpfile.html")
False
>>> System.IO.File.Exists("ipy.exe")
True
>>> System.IO.Path.GetTempPath()
'/var/tmp/'
>>> System.IO.Path.GetTempFileName()
'/var/tmp/tmp6480994e.tmp'
>>> System.Net.Dns.GetHostName()
'hagi.local'
>>> wc = System.Net.WebClient()
>>> wc.DownloadFile("http://textdirected.googlepages.com","tmpfile.html")
>>> System.IO.File.Exists("tmpfile.html")
True
>>> ipinfo = System.Net.Dns.GetHostEntry("textdirected.googlepages.com")
>>> ipinfo.HostName
'Googlepages.l.google.com'
>>> for i in ipinfo.AddressList:
... print i
...
64.233.xxx.yy
64.233.xxx.zz
64.233.xxx.tt
>>> p = System.Diagnostics.Process.Start('ls')
Doc IronPython.dll Mapack.dll Src ipyw.exe
FAQ.html Lib Readme.html Tutorial
IronMath.dll License.html Samples ipy.exe
Winfomrs画面も出せます. IronPython-1.0-Samples-Pyc.zip をダウンロードし,その中の winforms_hw.pyを対象にPyc.pyを使って説明文書を参考にしてビルドします.その結果,winforms_hw.exeが 得られます.ここまでは普通のTerminal画面でできます.実行はAppleが配布しているX11のxtermから 実行します.mono winforms_hw.exeで実行開始です.以下のような画面が出力されます.

主プログラム:
$ cat PyCallPyDLL_main.py
import clr
clr.AddReferenceToFile("PyCallPyDLL_sub.dll")
import PyCallPyDLL_sub
PyCallPyDLL_sub.sub()
副プログラム:
$ cat PyCallPyDLL_sub.py
def sub():
print "Hello."
dllビルド:
$ mono ipy.exe Pyc.py /target:dll PyCallPyDLL_sub.py
Input Files:
PyCallPyDLL_sub.py
Resource Files:
Output:
PyCallPyDLL_sub.dll
Target:
Dll
exeビルド:
$ mono ipy.exe Pyc.py /target:exe /reference:PyCallPyDLL_sub.dll PyCallPyDLL_main.py
Input Files:
PyCallPyDLL_main.py
Resource Files:
Output:
PyCallPyDLL_main.exe
Target:
ConsoleApplication
実行時混乱回避目的pyファイル名変更:
$ mv PyCallPyDLL_main.py PyCallPyDLL_main_py.bak $ mv PyCallPyDLL_sub.py PyCallPyDLL_sub_py.bak
実行:
$ mono PyCallPyDLL_main.exe Hello.