명령 프롬프트에서 ipy 명령 또는 ipy64 에  의한 초기 메시지입니다.

(메시지를 보시면 IronPython 버전 및 동작되는 .NET 프레임워크 버전을 알 수 있습니다).

 

* 버전 2.6.1

IronPython 2.6.1 (2.6.10920.0) on .NET 2.0.50727.4963
Type "help", "copyright", "credits" or "license" for more information.
>>>


 

* 버전 2.6.2

IronPython 2.6.2 (2.6.10920.0) on .NET 4.0.30319.239
Type "help", "copyright", "credits" or "license" for more information.
>>>

 

* 버전 2.6.2 (아래는 ipy64로 실행했는데, ipy로 실행한 것과 똑 같은 메시지입니다.) 

* (import sys 하여 sys.version 으로 확인해도 64bit 용인지 아닌지 알려주지 않습니다.)

* (sys.executable 로는 겨우(?) 실행파일과 경로가 확인됩니다,)

IronPython 2.6.2 (2.6.10920.0) on .NET 4.0.30319.239
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.version
'2.6.1 (IronPython 2.6.2 (2.6.10920.0) on .NET 4.0.30319.239)'

>>> sys.executable
'c:\\ironpython27\\ipy64.exe'
 

 

* 버전 2.7.2.1  (이것은 버전 2.7.2 의 버그 제거 버전입니다.)

IronPython 2.7.2.1 (2.7.0.40) on .NET 4.0.30319.239 (32-bit)
Type "help", "copyright", "credits" or "license" for more information.

 

* 버전 2.7.2.1 (아래는 ipy64 명령으로 실행한 것입니다.)

IronPython 2.7.2.1 (2.7.0.40) on .NET 4.0.30319.239 (64-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>>

Posted by Scripter
,

아래의 C# 소스는 Visual Studio 2010의 명령프롬프트를 영어서 컴파일하고. IronPython 소스는 병도의 명령창을 열어서 IronPuthon 이 설치된 폴더의 경로와 csgufudan.dll 파일이 있는 퐁더의 경로를 명령창의 환경변수 PATH에 잡아주고, IronPython의 ipy 명령으로 실행합니다,

 

* C# 소스

// Filename: csgugudan.cs
//         a library for IronPython
//
// Compile: csc /debug+ /target:library csgugudan.cs
// Execute: ipy callGugudan.py

using System;
using System.Collections;

public class Gugudan : IEnumerable {

    private int dan;
    private int last;

    public Gugudan(int dan, int last) {
        this.dan = dan;
        this.last = last;
    }

    public override string ToString() {
       return string.Format("Gugudan: {0,2} x {1,2} = {2,3}", dan, last, dan*last);
    }

    public IEnumerator GetEnumerator() {
        for (int i = 1; i <= last; i++) {
            yield return new Gugudan(dan, i);
        }
    }
}

 

* IronPython 소스

# Filename: callGugudan.py
#      Load a dll library created by C#
#
# Execute: ipy callGugudan.py

import clr
clr.AddReferenceToFile("csgugudan.dll")
import Gugudan
g = Gugudan(19, 10)
for i in g: print i

 

* 다음은 실행 결과입니다.

Gugudan: 19 x  1 =  19
Gugudan: 19 x  2 =  38
Gugudan: 19 x  3 =  57
Gugudan: 19 x  4 =  76
Gugudan: 19 x  5 =  95
Gugudan: 19 x  6 = 114
Gugudan: 19 x  7 = 133
Gugudan: 19 x  8 = 152
Gugudan: 19 x  9 = 171
Gugudan: 19 x 10 = 190

 

 

Posted by Scripter
,

지난 3월에 발표된 IronPython 2.7.2.1 을 설치하고 명령창에서 ipy 를 실행핶는데, 다음의 에러 메시지를 내고는 실행되지 않는다. ipyw 도 실행되지 않는디.

Failed to load language 'PythonContext': 메서드를 찾을 수 없습니다. '!!1[] Microsoft.Scripting.Utils.ArrayUtils.ConvertAll(!!0[], System.Func`2<!!0,!!1>)'

이럴 때는 설치된 IronRuby 를 제거한다. 그러면 IronPython이 잘 실행된다.

(아마도 IronPython과 IronRuby가 충동하는 둣...)

 

Posted by Scripter
,

 IronPython 은 닷넷 상에서 동작하는 애플리케이션을 만드는 Python 기반 언어 및 툴이다.
2011년 3월 12일에 출시된 IronPython 2.7 은 닷넷 4.0 과 Visual Studio 2010 에 최적화되어 있다.

               IronPython 홈페이지: http://ironpython.net/

다음은 IronPython 용으로 만들어진 초 간단 Hello 예제의 소스이다. (파일명을 hello.py 로 저장하였다.)

# coding: 949

print "Hello"
print "안녕하세요?"


소스파일의 인코딩이 ms949 나 cp949도 아니고 그냥 949 이다. (IronPython 2,7 에서는 이렇게 해야 한글을 사용할 수 있다.)

저 소스를 실행하려면 명령창을 열고,

    set PATH=%IRONPYTHON_HOME%;%PATH%

한 다음

    ipy hello.py
    (또는 ipyw hello.py)

하면 된다. (한글도 잘 출력된다.)
IRONPYTHON_HOME 은 IronPython 2.7 이 설치된 폴더의 경로명로 저장한 환경변수이다.
어번에는 저 소스를 컴파일하여 실행파일 hello.exe 를 만들어 보겠다.

ipy %IRONPYTHON_HOME%Tools\Scripts\pyc.py /main:hello.py /target:exe /platform:x86

명령창에서 위의 명령을 내리면 hello.dll 파일과 hello.exe 파일이 생긴다.
만일 64비트 윈도우 환경에서 실행될 파일을 만들자면 옵션 /platform:x86 대신 /platform:x64 로 한다.
이제 hello.exe 를 실행하면 실헹결과로 명령창에 메세지 두 줄이 출력될 것이다.

다른 시스템에 가져 가서 실행하려면 그 시스템에 런타임 환경인 닷넷 4.0 이 설치되어 있어야 하고,
hello.dll 파일과 hello.exe 파일만 가져가면 된다.


이제 GUI Hello 예제(그래픽 사용자 인터페이스()를 갖는 Hello 예제)를 작성해 보자.
(파일명 HelloWinIPT.py 로 저장하였다.)

# coding: 949

# Filename: HelloWinIPY.py
#  Compile: ipy pyc.py /main:HelloWinIPY.py /target:winexe /platform:x86

import clr

clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")

from System.Windows.Forms import *
from System.Drawing import *

f = Form()
f.Width = 300
f.Height = 140
font = Font("Verdana", 16)
f.Text = "Greeting"

lb = Label(Text = "Hello")
lb.Font = font
lb.Location = Point(10, 20)
lb.Width = 260
f.Controls.Add(lb)

tbox = TextBox()
tbox.Location = Point(10, 60)
tbox.Width = 170
f.Controls.Add(tbox)

btn = Button(Text = "인사하기")
btn.Location = Point(190, 60)
btn.Width = 90
f.Controls.Add(btn)

def sayHello():
    lb.Text = "Hello, " + tbox.Text + "!"
   

def click(f, a):
    sayHello()
   

def greet(f, ev):
    if ev.KeyChar == chr(13):
        sayHello()
   

btn.Click += click
tbox.KeyPress += greet

Application.Run(f)


명령창에서 

    ipy HelloWinIPY.py
    (또는 ipyw HelloWinIPY.py)

명령으로 실행된다. 다음은 실행 결과를 캡쳐한 그림이다.


실행 파일 HelloWinIPY.exe 파일을 만들려면

ipy %IRONPYTHON_HOME%Tools\Scripts\pyc.py /main:HelloWinIPY.py /target:winexe /platform:x86

명령을 내린다. 그리면 HelloWinIPY.dll 파일과 HelloWinIPY.exe 파일이 생긴다.
(만일 64비트 윈도우 환경에서 실행될 파일을 만들자면 옵션 /platform:x86 대신 /platform:x64 로 한다.)
이제 HelloWinIPY.exe 를 실행하면 위와 마찬가지로 실행된다.
(메세지 출력은 "인사하기" 버튼을 클릭해도 되고, 텍스트 박스에서 엔터 키를 눌러도 된다.)

마찬가지로 다른 시스템에 가져 가서 실행하려면 그 시스템에 (런타임 환경인) 닷넷 4.0 이 설치되어 있어야 하고, HelloWinIPY.dll 파일과 HelloWinIPY.exe 파일만 가져가면 된다.


Posted by Scripter
,