기본 콘텐츠로 건너뛰기

라벨이 파이썬인 게시물 표시

IronPython 활용

예전부터 응용 프로그램에 Python을 결합하여 즐겨 사용했는데, 어떤 사용자의 요구사항 때문이었습니다. 그 사용자가 사용하는 프로그램에 계산식이 있는데 계산식이 프로젝트의 특성때문에 조금씩 수정해야 한다는 것이었습니다. 프로젝트마다 계산식을 수정해서 프로그램을 배포하기가 어려워 계산식 자체를 Python 코드로 외부 파일로 빼내는 방식으로 처리했습니다. 어느날 차를 몰고 가는데 전화가 와서 이번 프로젝트에서는 factor 3을 3.5로 바꿔야 하는데 어떻게 하나요? 라고 문의가 왔습니다. Python 파일을 열어 숫자 3을 3.5로 바꾸면 된다고 답변을 해줬습니다. 이렇게 사용자는 프로젝트마다 Python에서 계산식을 수정하여 사용하면 되기 때문에 프로그램을 수정할 필요가 없어집니다. 이전 글 에서도 이야기했듯이 IronPython은 C#과 궁합이 아주 좋아 이번 프로젝트에서도 IronPython을 프로그램에 포함시켰습니다. 자동으로 생성된 배관 라인을 수정하거나 새로 생성하는 기능을 위해 IronPython을 활용했습니다. 먼저 앱 실행 경로를 IronPython 검색 경로에 추가해줍니다. 1 2 3 4 5 6 #region IronPython의 검색 경로에 앱 실행 경로를 추가 var paths  =  _IronPython.GetSearchPaths(); var ExecutePath  =   System .IO.Path.GetDirectoryName(Application.ExecutablePath); paths.Add(ExecutePath); _IronPython.SetSearchPaths(paths); #endregion Colored by Color Scripter cs 아래와 같이 C# Class를 정의하고 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public   clas...

[Jenkins] Python 가상 환경 빌드

Jenkins에서 Python 가상 환경을 빌드하는 방법에 대한 설명입니다. Freestyle 프로젝트 대상으로 설명하겠습니다. Global Properties에서 가상 환경 경로를 설정합니다. Build Step에서 Execute Windows batch command 탭을 추가합니다. 설정한 VirtualEnv를 이용하여 프로젝트의 가상 환경을 생성합니다. 가상 환경을 활성화 시킵니다. $$\text{.\Your Project\.venv\scripts\activate.bat}$$ 패키지 목록을 이용하여 프로젝트에 필요한 패키지들을 설치합니다. 패키지 목록을 만드는 방법은 이전 글에서 확인할 수 있습니다. $$\text{pip install -r .\requirements.txt}$$ PyInstaller를 이용하여 프로젝트를 빌드합니다. pyinstaller 에 대한 자세한 내용은 여기서 확인하시면 됩니다. $$\text{pyinstaller .\App.spec --onedir -p ".\Your Project\.venv\Lib\site-packages\PyQt5" -w --log-level=DEBUG -y}$$ 가상 환경에서 빠져나옵니다. $$\text{deactivate.bat}$$ 가상 환경을 활성화시켜 작업을 수행하고 빠져나오는 부분을 batch command로 작성하려면 각각의 부분을 &으로 연결시켜 하나의 command로 만들어줘야 합니다. 그렇지 않고 각각 하나의 command로 실행시키면 가상 환경 하에서 빌드를 수행할 수 없습니다.(activate.bat로 활성화된 가상 환경이 command가 종료되면 사라집니다.)

[Python] 가상 환경 구축

  Global 파이썬 환경에 모든 프로젝트의 모듈들을 설치하다보면 모듈간의 의존성, 버전 문제가 발생할 수 있습니다. 이러한 문제들을 방지하기 위해 프로젝트별 가상 환경을 구축하는 것이 좋습니다. 아래는 가상 환경을 구축하는 절차입니다.( PyCharm 기준으로 설명합니다.) 가상 환경 구축 프로젝트 폴더에서 Command 창을 열어 아래 명령 실행합니다. .venv는 생성할 폴더 이름입니다. 다른 이름으로 폴더를 생성해도 됩니다. virtualenv .venv virtualenv 패키지가 설치되어 있지 않으면 아래 명령으로 설치합니다. pip install --upgrade virtualenv 새로운 프로젝트 생성 Virtualenv로 프로젝트를 생성하시면 됩니다. 기존 프로젝트 가상 환경 설정 Setting에서 Python Interpreter 탭을 클릭합니다. Interpreter 콤보 박스의 맨 아래 Show All을 클릭합니다. 맨 아래 [+] 버튼을 클릭합니다. Existing Environment 항목을 선택합니다. [OK] 버튼을 눌러 설정을 저장합니다. 가상 환경을 적용하기 위해 PyCharm을 종료하고 재실행 합니다.(Terminal에서 아래와 같이 가상 환경이 적용된것을 확인합니다.) 가상 환경에 설치되어 있는 패키지들의 목록을 파일로 추출하여 패키지를 설치할 수 있습니다.      pip freeze > requirements.txt : 패키지 목록 추출      pip install -r requirements.txt : 목록 파일을 이용하여 패키지 설치 requirements.txt 대신 다른 파일 이름을 사용할 수 있으나 일반적으로 requirements.txt를 사용합니다.

[Python] 이진 파일 읽고 쓰기

아래는 이진 파일을 쓰는 파이썬 코드와 실행하는 방법입니다. #! -*- Encoding: Latin-1 -*- import sys if __name__ == '__main__': if 4 == len(sys.argv): print 'file name = ' + str(sys.argv[1]) print 'offset = ' + str(sys.argv[2]) print 'string = ' + str(sys.argv[3]) f = open(sys.argv[1] , 'rb+') # 이진 파일 읽고 쓰기로 엽니다. f.seek(int(sys.argv[2]),1) # 파일의 현 위치에서 주어진 값 만큼 이동합니다.(양의 값이면 앞으로, 음의 값이면 뒤로) f.write(sys.argv[3]) # 파일에 문자열을 씁니다. f.close() # 파일을 닫습니다. 2011.02.23 : NULL값으로 패딩 주어진 문자열의 길이가 설정된 길이 보다 작을 때 그 나머지 값에 NULL을 채워 파일에 적기. str = sys.argv[3] if len(str) 또한  struct 모듈 을 이용하여 데이타를 팩킹하여 저장 혹은 언팩킹하여 읽을 수 있습니다. import struct try: file.write(struct.pack('I', idx)) # unsigned int 데이터 저장 data = struct.pack('ffff', self.color[0], self.color[1], self.color[2], 1) # 4개의 float 데이터 저장 file.write(data) data = struct.pack('I', len(self.vertices)) file.write(data) data = struct.pack(...