CentOS는 python 2.6 버전을 쓰는 파일 시스템들이 있다. 그래서 2.6버전을 지우고 2.7버전을 쓰면 안되고 ,두 가지 버전이 공존해 있어야 한다.

※ /usr/bin/python --version 명령했을 때, python 2.6버전 대가 출력되어야 한다.


맨 처음 CentOS를 설치하고 2.6버전을 2.7로 덮어씌우니 매우 어려운 문제가 발생하였다. 그래서 다시 포맷을 하고 다시 CentOS 설치를 해야 했다...


1. Install development tools

# yum groupinstall "Development tools"

# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel


2. Dwonload and Install Python

make를 수행할 때, altinstall 로 하는 것이 중요하다. CentOS 는 python 2.6버전을 쓰는 파일 시스템이 있기 때문에 두 가지 버전을 설치하여야 한다.

DOWNLOAD AND INSTALL PYTHON 2.7.3

# wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2

# tar xf Python-2.7.3.tar.bz2

# cd Python-2.7.3

# ./configure --prefix=/usr/local

# make && make altinstall


DOWNLOAD AND INSTALL PYTHON 3.3.0

# wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2

# tar xf Python-3.3.0.tar.bz2

# cd Python-3.3.0

# ./configure --prefix=/usr/local

# make && make altinstall

/usr/local/bin/python2.7 or /usr/local/bin/python3.3

파이썬 2.6의 시스템 버전은 /usr/bin/python 그리고 /usr/bin/python2.6 로 계속 사용할 수 있다.


3. Download and Install Distribute

이것은 파이썬에 대한 패캐지를 설치하는데 사용하는 스크리브 /usr/local/bin/easy_install-2.7을 생성한다.

/usr/local/lib/python버전/site-packages/ 에 패키지가 저장된다.

DOWNLOAD AND INSTALL DISTRIBUTE FOR PYTHON 2.7 (2.7버전을 쓰려면 이것을 실행)

# wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.35.tar.gz

# tar xf distribute-0.6.35.tar.gz

# cd distribute-0.6.35

# python2.7 setup.py install


DOWNLOAD AND INSTALL DISTRIBUTE FOR PYTHON 3.3

# wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.35.tar.gz

# tar xf distribute-0.6.35.tar.gz

# cd distribute-0.6.35

# python3.3 setup.py install


4. Vitual Environment Install

위의 3번까지만 하면 파이썬 설치가 완료된다. 

하지만, 파이썬의 여러 버전으로 작업하는 것은 어렵고 오류가 발생하기 쉽다. 그래서 virtualenv을 설치하고 사용하는 것이 좋을 듯 싶다.

Vitualenv 는 샌드 박스와 같은 환경에서 파이썬을 실행하는 것이 가능하게하는 가상 파이썬 환경 빌드이다.

각각의 샌드 박스는 자신의 파이썬 버전과 패키지를 가질 수 있다. 여러 프로젝트 자체의 의존성 및 각각 작업 할 때 이것은 매우 유용하다.

INSTALL AND USE VIRTUALENV FOR PYTHON 2.7

# easy_install-2.7 virtualenv

# virtualenv-2.7 --distribute someproject

New python executable in someproject/bin/python2.7

Also creating executable in someproject/bin/python

Installing distribute...................done.

Installing pip................done.

# source someproject/bin/activate

(someproject)# python --version

Python 2.7.3

(someproject)#


INSTALL AND USE VIRTUALENV FOR PYTHON 3.3

# easy_install-3.3 virtualenv

# virtualenv-3.3 --distribute otherproject

New python executable in otherproject/bin/python3.3

Also creating executable in otherproject/bin/python

Installing distribute...................done.

Installing pip................done.

# source otherproject/bin/activate

(otherproject)# python --version

Python 3.3.0

(otherproject)#


'Linux > CentOS' 카테고리의 다른 글

CentOS 7 - media repository  (0) 2014.08.24
CentOS 7 NTFS FileSystem Mount  (0) 2014.08.16
RPM (Redhat Package Manager)  (0) 2013.08.11
CentOS 6.4 NVIDIA GeForce Graphic Driver Install  (3) 2013.04.06
[CentOS] centos 6.4 Net Install  (1) 2013.03.24
Posted by scii
:

children() 함수: 하위 노드들의 목록을 보여줍니다.

name(): 이름을 보여줍니다.


1. 일단 아무노드나 만듭니다~


2. geo2 의 하위노드들 


3. python창에서 작업을 하면, 디버깅하기가 여간 불편한것이 아니라서... 디버깅을 편하게 하기 위해, 그리고 단순 클릭만으로 스크립트가 실행되게끔 하려고 shelf 툴에서 작업을 하였습니다. 

shelf 에서 마우스 오른쪽 클릭을하면, Edit Shelf가 나오는데 그것을 클릭 후 Script Language를 Python으로 바꾸어주면 됩니다. 

그 다음, 아래의 소스코드를 작성하시면 됩니다.

이 소스코드에서 PrintChild함수는 재귀함수(함수안에서 다시 자기 자신을 호출하는 함수)입니다. 여기서 재귀함수를 쓴 까닭은 트리구조에서 재귀함수를 쓰면, 코드가 상당히 간결해집니다. 물론 쓰지 않고 함수를 구성해도 됩니다만 코드가 상당히 너저분해지고 까다로워질 것이라 생각합니다. 

그래서 트리구조에서 하위노드들을 가져올 때, 재귀함수를 써서 가져옵니다. 

후디니는 노드구조(트리구조) 이기때문에 재귀적으로 구현해야 코드가 간결해집니다. 트리구조와 재귀함수의 관계가 무엇인지 다 아시겠지만, 혹 궁금하신 분들은 "이진 트리의 순회"를 찾아보시면 좋을 것 같네요.

위키백과: http://ko.wikipedia.org/wiki/%ED%8A%B8%EB%A6%AC_%EC%88%9C%ED%9A%8C

PrintChild함수 내에서 가장 중요한 라인은 5번째 라인입니다. 5번째 라인을 보시면 다시 자기자신을 호출합니다.

그래서 첫번째 인수인 node로 진행중인 child가 전달되고, 두번째 인수로 indent가 +3이 되어 3이 전달됩니다.

그 다음, 하위노드가 또 다시 존재한다면, 첫번째 인수인 node로 진행중인 child가 전달되고, 두번째 인수로 indent가 +3이 되어 6이 전달됩니다.

이렇게 더 이상 하위노드가 존재하지 않을때까지 내려가면, node.children()은 None을 리턴하고 for문은 거짓이되어 자기를 호출했던 곳으로 다시 돌아갑니다.

그렇게 맨처음 자기자신을 호출했던 곳까지 돌아가고 함수가 끝납니다. 

재귀함수를 글로 설명하려니 참 애매하네요. 그림으로 보시면 아마 금방 이해하실겁니다. 재귀함수의 관한 그림 많으니 한번 찾아보시면 좋을 듯 합니다.


4. 위의 스크립트의 실행 결과입니다. 

결과를 보시면, ipr_camera노드의 하위노드 caOrigin, file1, xform1이 보이네요.

geo1는 file1...

그런데 위의 스크립트는 파이썬 창을 열어야 확인가능합니다. print문은 python창으로 출력을 보내네요. 리눅스에서는 이렇게 되는데 윈도우에서는 어떨지 모르겠습니다. 

여하튼, 보기가 좀 불편합니다. 


5. 여기서는 print문 대신에 메시지를 띄우기위해 hou.ui.displayMessage를 함수를 썼습니다.

그리고 이 함수를 써서 결과물을 잘 나오게 하도록 '\n'(new line) 을 넣었습니다.


6. 실행 결과


'Houdini > Python' 카테고리의 다른 글

Scene View Select (obj, geo, dop, etc...)  (0) 2013.07.11
rot, trans, scale  (0) 2013.05.25
hou Module Functions  (0) 2013.04.01
Python으로 만든 뷰창 옵션 지우기  (0) 2013.02.23
Houdini Python Test  (0) 2013.02.20
Posted by scii
:

튜플 (Tuple)

Programming/Python 2013. 2. 21. 16:46 |
튜플은 임의의 객체의 순서를 가지는 모음으로 리스트와 유사한 면이 많다. 
차이점은 변경 불가능 형이라는 것이다. 또한 튜플은 리스트가 가지고 있는 것과 같은 메쏘드(자체 함수)를 가지지 않는다. 
튜플은 시퀀스 형이므로 시퀀스 형이 가지는 일반적인 연산을 모두 가진다. 인덱싱, 슬라이싱, 연결, 반복, 길이 연산등
튜플은 () 로 표현한다.


리스트와의 공통점과 차이점

공통점

리스트와의 공통점은 임의의 객체를 저장할 수 있다는 것과 시퀀스 자료형이라는 것이다. 


차이점

문자열과 같은 변경 불가능 시퀀스 형이다. 따라서, 튜플 아이템을 변경하려면 슬라이싱과 연결을 이용해야 한다.

메쏘드를 가지지 않는다.

튜플은 포맷 문자열 지원, 함수 호출 시 가변 인수 지원 기능 등이 있다.



튜플을 사용하는 경우


같은 의미를 타나내지만 운영 체제마다 독자적인 기호를 사용하는 경우가 있다. 파이썬은 운영 체제의 독립성을 유지하기 위해서 이러한 내용을 os 모듈의 일부 이름에 표현해 놓았다.



Posted by scii
:

리스트를 스택으로 쓰기

스택이란 나중에 넣은 데이터를 먼저 꺼내도록 되어 있는 메모리 구조를 말한다. 

넣는 연산을 'push', 꺼내는 연산을 'pop' 이라고 한다.


리스트는 그 자체를 스택으로 쓸 수 있게 설계되었다. 스택의 push는 append 메쏘드를, pop은 pop 메쏘드를 사용한다.





리스트를 큐로 쓰기

큐란 먼저 넣은 데이터를 먼저 꺼내도록 되어 있는 메모리 구조를 말한다.

데이터를 넣을 때는 append를, 꺼낼 때는 pop(0)을 이용한다.




'Programming > Python' 카테고리의 다른 글

특정 문자열 없애기  (0) 2013.02.13
리스트 내장  (0) 2013.02.13
리스트  (0) 2013.02.12
문장에서 각 단어의 횟수 세기  (0) 2013.02.12
문자열 분리  (0) 2013.02.12
Posted by scii
:

Python IDLE과 에디터의 컬러 테마는 기본적으로 설치되어있지 않다. 그래서 사용자가 직접 설치를 해야한다.

컬러 테마는 밑에 있는 링크에서 얻을 수 있다.

https://gist.github.com/1554778


제공되는 테마는 tango, desert, obsidian 이렇게 3종류가 있다. 

원하는 테마의 소스를 copy & paste 한 후, config-highlight.cfg 라는 이름으로 저장한다. 

그 후, [사용자 - 현재 사용하는 사용자 디렉토리 - idlerc 디렉토리] 에 해당 파일을 넣어주면 된다.

리눅스에서는 .idlerc이다.


※ 테마파일이 .idlerc 디렉토리에 없으면 활성화가 되지 않는다.


Obsidian 테마로 바꾼 모습.






내가 customizing 한 IDLE Theme


압축을 푼 후, C:\Users\Administrator\.idlerc 경로에 덮어씌어주기만 하면 된다.

리눅스를 쓴다면, $HOME/.idlerc 경로에 덮어씌어주면 된다.

idlerc_130221.zip



'Programming > etc' 카테고리의 다른 글

윈도우환경을 리눅스환경처럼  (0) 2013.02.19
Python IDLE 한글 설정  (0) 2013.02.13
Visual Studio 디버깅하는 방법  (0) 2013.01.03
Eclipse 단축키  (0) 2012.12.26
Eclipse 테마 설정  (0) 2012.12.26
Posted by scii
:

논리 연산자

Programming/Python 2012. 11. 26. 16:52 |

부울(Boolean) 연산자는 진리 값을 피연산자로 취해서 논리 값을 계산해 내는 연산자이다.

부울 연산자는 다른 연산자보다 우선 순위가 낮다.


python에서 거짓으로 간주되는 것들

None

0, 0.0, 0L, 0.0+0.0j

"", [], (), {}

이것을 제외한 나머지는 참이다.






논리식 계산 순서

'and', 'or'가 포함된 논리식은 식의 결과 값을 판정하는 데 최종적으로 기여한 객체의 값을 식의 값으로 리턴한다.

다시 말하면, and, or 연산자는 왼쪽부터 식을 계산하다가, 어떤 시점에서 결과가 알려지면 더 이상 계산을 하지 않고 그 시점의 객체를 리턴한다.

리턴되는 값은 참, 거짓이 아님을 주의해야 한다!!!



C/C++ 에서는 and, or를 하면 bool방식으로 참이나 거짓만을 리턴한다. 반면.. python은...



python에서는 값을 리턴한다. 이것을 주의해야 한다.





'Programming > Python' 카테고리의 다른 글

str 과 repr  (0) 2013.02.08
임의의 정수를 비트단위로  (0) 2013.02.01
관계 연산자(<,>,<=,>=,==,!=)  (0) 2012.11.26
Decimal 자료형  (0) 2012.11.26
python의 Backticks ( repr() )  (0) 2012.11.26
Posted by scii
:

함수

Programming/Python 2012. 11. 26. 01:00 |

함수(Function) 란 하나의 이름으로 코드를 묶는 단위이다 함수로 작성된 프로그램은 디버깅이 간단하고, 수정이 쉬우며 관리하기 쉽다. 

함수는 반복적인 코드를 없애 주며 짧은 시간에 효과적으로 프로그램을 작성할 수 있게 해 준다.


함수를 정의하는 법

def 함수명(가인수들):

문들

(파라미터에 디폴트 값 줄 수 있음)


여기서, 가인수들이란 함수 호출 측에서 넘겨주는 파라미터를 받는 이름들을 의미한다. 함수를 호출할 때 넘겨주는 인수를 실인수라고 한다. 

즉, 실인수를 가인수한테 넘겨주는 것이다. 


파이썬은 동적인 인수 전달을 하므로 함수 선언 시에 인수의 형을 지정할 필요가 없다. 어떠한 형의 인수도 받을 수 있으며, 그 형에 맞는 + 연산이나 등등을 수행해준다. 

이러한 기능을 동적인 형 결정(Dynamic Typing)이라고 한다. 이러한 점은 python의 큰 장점이며, 다른 언어에서는 추가로 작성해야 할 많은 코드를 줄여 주는 요소이기도 하다.





C++의 Template 으로 만들어진 함수와 똑같다... 좋다!! 

이 기능만해도 코드라인 확 줄여주겠네

'Programming > Python' 카테고리의 다른 글

Decimal 자료형  (0) 2012.11.26
python의 Backticks ( repr() )  (0) 2012.11.26
예약어 pass  (0) 2012.11.26
Python 제어문(if, for, while)  (0) 2012.11.25
메모리 관리(쓰레기 수집) // 객체의 신원 식별  (0) 2012.11.25
Posted by scii
:

쓰레기 수집

- 파이썬에서는 특별히 사용자가 관리해야 할 메모리는 없다. 모든 것은 자동으로 생성되고 자동으로 환원된다. 

추가로 필요한 메모리가 있으면 시스템에서 알아서 확장해 준다. 더 이상 사용되지 않는 객체들은 자동적으로 사라진다. 이러한 작업을 쓰레기 수집(Garbage Collection)이라 한다.

파이썬은 모든 것이 객체로 관리되며, 모든 객체는 레퍼런스 카운트(Reference Count)라는 값을 가지고 있다. 이것은 얼마나 많은 부분에서 객체를 참조하고 있는가를 나타내 주는 정수이다.



레퍼런스 카운트를 얻는 법

- sys 모듈의 getrefcount 함수를 이용하면 된다.


여기서 레퍼런스 카운트가 1씩 증가되서 출력되는 것은 getrefcount 함수가 이 객체를 처리하기 위해서 새로운 카운트 값을 1 증가시켰기 때문이다.

따라서, 실제의 카운트 값은 getrefcount 함수가 넘겨주는 값보다 1 작다.






객체의 신원 식별하기

- 대부분의 경우에는 필요 없겠지만 id 내장 함수를 이용하면 객체의 주소를 식별할 수 있다. 두 객체의 id가 동일하다면, 같은 객체를 참조하고 있는 것이다.

a, b는 모두 같은 id의 객체를 가리키고 있다.

만일 두 이름 a, b가 같은 객체를 참조하고 있는가를 알려면 a is b를 이용한다.


여기서 a = 1, b = 1 했는데... 와우.. 이 결과를 보기 전까지 나는 a, b가 서로 다른 객체를 가리키고있지 않을까? 하며 생각했었다....

그런데 여기 결과는 같은 객체를 이름 a,b가 가리키고있다..

곰곰히 생각해보니 당연한 결과였다. 왜냐하면, 똑같은 객체를 굳이 다시 한번 만들필요없으니 말이다... 아항!!!

'Programming > Python' 카테고리의 다른 글

예약어 pass  (0) 2012.11.26
Python 제어문(if, for, while)  (0) 2012.11.25
파이썬의 객체 자료형  (0) 2012.11.25
변경 가능성 (python에서 정말 중요하다고 생각하는 개념)  (0) 2012.11.25
리스트, 튜플, 사전  (0) 2012.11.25
Posted by scii
: