레이블이 python인 게시물을 표시합니다. 모든 게시물 표시
레이블이 python인 게시물을 표시합니다. 모든 게시물 표시

목요일, 10월 18, 2007

freeze time.strptime문제 해결하기.

freeze로 배포하는 경우 time.strptime을 사용하는 코드가 있는 경우에

함수를 호출하면 _strptime을 모듈을 못 찾아서 종료되는 문제가 발생합니다.

이 문제를 해결하기 위해서... freeze.py에 추가하는 코드를 수정했습니다.

참고하세요

 

#time이 호출되는경우에 time.strptime을 못찾는 문제를 해결함.

    # modules that are imported by the Python runtime
    implicits = []
    for module in ('site', 'warnings', '_strptime'):   #  <-- 추가한 코드
        if module not in exclude:
            implicits.append(module)

python 실행파일 만들기(freeze.py)

win32에서는 py2exe를 사용해서 잘 사용하는 중에 unix배포판을 만들 필요가 있어서

조사중에 freeze 와 cx_Freeze가 있더군요. 하지만 cx_Freeze는 실행파일이 있는 경로에 so파일이 있어야만 동작해서 freeze를 선택했습니다.

배포를 위해서는 freeze.py 후 python 설치된 경로에 lib/lib-dynload 디렉토리에 있는 so파일들을 모두 배포하고 그위치를 PYTHONPATH 환경변수에 추가해야함.

 

간단 사용법

freeze.py -o dist test1.py

cd dist

make

./test1 <-- 실행파일

 

덧붙임: freeze는 python사이트에서 소스코드를 받으면 Tools 디렉토리에 있습니다.

금요일, 10월 12, 2007

Oracle 사용중에 접속이 끊어진것 확인하는 방법


ORA-03114 코드를 처리해서 재 접속하는 코드를 추가하면됩니다.


import re,cx_Oracle


ser = re.search('ORA-(\d+):\s+', sys.exc_value.__str__())
# DatabaseError: ORA-03114: not connected to ORACLE
if ser and (ser.group(1) == '03114'):
self.close()
self.connectOracle(self.dbId, self.dbPasswd, self.dbTnsName )


else:


__LOG__.Exception()
__LOG__.Trace( "OracleDao(PS_BTS_CLASS) execute error: ", sys.exc_info() )


return None

cx_Oracle에서 prepare하여 사용하기 예제




python 에서 Oracle 사용하는 모듈









cx_Oracle에서 prepare하여 사용하기 예제









>>> ts = datetime.datetime.now()


>>> print ts


2007-03-10 20:12:02.109000


>>> cursor.prepare("INSERT INTO python_tstamps VALUES(:t_val)")


>>> cursor.setinputsizes(t_val=cx_Oracle.TIMESTAMP)


cursor.setinputsizes(t_val=cx_Oracle.TIMESTAMP)


>>> cursor.execute(None, {'t_val':ts}) <-- 이부분이 중요 포인트


>>> db.commit()









링크: http://www.oracle.com/technology/pub/articles/prez-python-timesanddates.html


금요일, 2월 09, 2007

perl2exe - 실행파일 만들기

* 파이션을 이용해서 실행파일을 만든경우
소스가 있는 위치에 setup.py파일을 만들고 실행시키면 dist디렉토리가 생성되면서 실행파일이 생성됨.
실행파일과 MSVCR71.dll을 배포하면됩니다.


* sample - console부분에 작성한 py파일을 입력한다.

from distutils.core import setup
import py2exe
import sys

# If run without args, build executables, in quiet mode.
if len(sys.argv) == 1:
sys.argv.append("py2exe")
sys.argv.append("-q")



setup(
# The first three parameters are not required, if at least a
# 'version' is given, then a versioninfo resource is built from
# them and added to the executables.
version = "0.0.1",
description = "py2exe hello world !!!",
name = "hello world samples",
options = {"py2exe": {"compressed": 1,
"optimize": 2,
"ascii": 1,
"bundle_files": 1}},
zipfile = None,
console = ["a.py"],
)