2012년 11월 27일 화요일

python 공학용 환경 구축


현재 사용중인 리눅스 버전은 "리눅스 민트 13 마야 시나몬".
우분투와 거의 발을 맞추고 있으므로,
우분투 저장소에서 제공되는 소프트웨어들도 거의 같을 것이다.

파이썬은 2.7

일단 소프트웨어 저장소에서 다음 것들을 설치해 준다.

(1) python 2.7 : 일단 깔려 있는지 확인.
(2) ipython : 인터액티브 콘솔
(2) numpy : 수치해석용 라이브러리 (행렬등)
(3) scipy : 과학기술용 라이브러리
(4) matplotlib : 플랏팅 라이브러리
(5) mayavi2 : 3D 비주얼라이제이션 라이브러리 및 IDE (?)
(6) sfepy : FEM 모듈

헌데 이중에
(2)~(5)번은 기본 저장소에 등록되어 잘 제공된다.  그냥 선택해서 깔아 주기만 하면 OK.




(6)번 sfepy 소프트웨어는 기본 저장소에서 제공해 주지 않는 것 같다.

http://sfepy.org/doc

여기 가서 튜토리얼 보면서 깔아준다.
의존성 있는 패키지들이 좀 있는데

(1) 필수 : numpy, scipy, cython
(2) sympy 사용시 의존성 있는 것들 : matplotlib, pyparsing, umfpack, pytables
(3) schroedinger.py 사용시 의존성 있는 것들 : pysparse, pexpect, gmsh (2D), tetgen (3D)
(4) log.py (live plotting) 사용시 의존성 있는 것들 : multiprocessing, matplotlib with GTKAgg
(5) isfepy 사용시 의존성 있는 것들 : ipython, matplotlib with WXAgg
(6) postproc.py 사용시 의존성 있는 것들 : mayavi2
(7) 도큐먼트 (재)생성을 위해 필요한 것들 : sphinx, numpydoc, LaTeX

의존성 있는 것들 중 빠진 것들을 볼드체로 표시했다.
우분투 계열 리눅스에서 필수 의존성 패키지들을 포함해서 한꺼번에 까는 명령은


sudo aptitude install python-scipy python-matplotlib python-tables python-pyparsing libsuitesparse-dev python-setuptools mayavi2 python-dev ipython python-sympy cython python-sparse


이렇게 소개되고 있다.
이미 설치되어 있는 패키지는 빼버리고 명령을 줘도 될 것이다.
기타 의존성 있는 것들도 마찬가지로 명령을 주면 될 것이다.

이렇게 준비 한 후,
sfepy 패키지는 tar 패키지로 따로 다운로드 받은 후에
sfepy 디렉토리를 만들어 준비해서 풀어넣어 주고 나서


python setup.py build_ext --inplace


이렇게 해 주면 몇 분 정도 걸려서 컴파일이 된다.


./runTests.py


이후 이걸 실행시켜서 제대로 컴파일이 되었는지 확인하면 됨.

리눅스 말고 윈도우 쪽에서 환경을 구성하는 것은 설명대로 따라가면 될테니
그리 어렵지는 않을 것이라고 생각된다.



한편, (5)번 mayavi2 의 경우 자체적인 환경도 가지고 있는데
여기서 기능점검 같은 걸 해 가면서 하는 것도 좋은 것 같다.
자체적인 튜토리얼도 아주 쉽게 잘 되어 있는 것 같다.


mayavi2 환경에서 IDE(?)를 실행시키는 아이콘이 따로 등록되지 않으므로
터미널상에서 mayavi 명령어를 때려주면 일단 실행이 되고
아이콘 등록해 주고 싶으면 /usr/bin/mayavi 를 아이콘으로 등록해 주면 된다.







































이제 활용을 생각해 보면,


ipython 환경에서 기본적인 것들을 인터액티브하게 연습을 하고,
에디팅은 Geany 에디터 같은 것을 사용하고,
mayavi 띄워서 3D 비주얼라이제이션이나 GUI를 쉽게 만들어 나갈 수 있고,
sfepy를 이용해서 간단한 FEM도 가능해진다.

이것들을 활용해서 필요한 어플리케이션을 구성하는 것이 충분히 가능하다고 생각된다.


최종적으로, 작성된 프로그램을 독립적인 바이너리 패키지로 만들어야 할 텐데
윈도우에서는 py2exe, pyinstall 이나 기타 패키지화 시켜주는 것들이 있을 것이고
리눅스 쪽에서 패키징 해 주는 방법은 아무래도 따로 서칭해 보아야 할 것 같다.

일단 눈에 띄는 것은 cx_Freeze (멀티 플랫폼) 또는 freeze.py (리눅스용) 같은 것들...



댓글 없음:

댓글 쓰기