MINERVA/Python 2023. 11. 26. 02:26
반응형

pythoncom은 이름에서 짐작 할 수 있듯이, 파이썬이 윈도우 환경에서 COM(Component Object Model)을 통해 Windows 시스템의 다양한 서비스 및 기능을 사용하기 위해 사용하는 패키지입니다.

 

그런데, pythoncom 을 일반적(?)인 방법으로 설치를 하면 꼭 아래와 같이 에러가 발생합니다.

 

(mmP310_32B) C:\Users\CHOI>pip install pythoncom
ERROR: Could not find a version that satisfies the requirement pythoncom (from versions: none)
ERROR: No matching distribution found for pythoncom

 

pythoncom 기능을 사용하기 위해서는, 아래와 같이 해야 합니다.

(mmP310_32B) C:\Users\CHOI>conda install pywin32

 

그 이유는 pythoncom 모듈은 PyWin32 라이브러리에 포함되어 있기때문입니다.

 

 

 

 

반응형
posted by choiwonwoo
:
MINERVA/Python 2023. 10. 8. 22:16
반응형

개발 경험이 쌓이게 되면, 자기만의 라이브러리(?)가 샘기게 됨과 동시에 동시에 기초적인 문법등을 깜빡하게 됨을 느끼게 되네요. ㅠㅠㅠ

 

1. 'Unnamed: 0 column' 생성 이유

pandas를 통해 엑셀 또는 CSV 파일을 읽는 경우 ''Unnamed: 0 column' 이 생기는 경우가 발생

원인: 대상 파일(엑셀 또는 csv)에 지정된 인덱스 열이 없기 때문이다.

그래서, pandas는 default로 'Unnamed: 0'로 인덱스를 생성함

 

2.  'Unnamed: 0 column' 없애는 방법

df = pd.read_excel(fileName,index_col=0)

 파일을 읽을때, 위와 같이 명시적으로 인덱스를 명시적으로  'index_col = 0'을 설정

 

또는 

df.drop(['Unnamed: 0'], axis=1, inplace=True)

몇시적으로 컬럼을 제거해도 됩니다.

 

3. 결론

단순한 내용이지만, 모르면 조금 번거로운 내용이어서 정리합니다.

반응형
posted by choiwonwoo
:
MINERVA/Python 2023. 10. 5. 21:57
반응형

역사(?)를 가지고 있는 있는 소프트웨어의 경우 아직도 32bit SDK만을 제공하는 경우가 있음(예: 증권 HTS등)

그래서, 개발을 진행하기 위해서는 32bit 환경이 필요함

 

1. Anaconda Prompt 실행: OS 환경 확인

> conda info

platform : win-64 <---- 64bit os 환경 확인

 

2. 32bit OS 환경으로 변경

>set CONDA_FORCE_32BIT=1

32 bit 변경 확인

platform : win-32 <---- 32bit os 환경 확인

 

cf) 참고: 환경을 다시 64bit로 전환할때는 set CONDA_FORCE_32BIT=0 실행

 

3. 32bit 가상환경 만들기

> conda create --name <가상환경명>

 

32 bit 가상 환경 생성

4. 생성된 가상환경 확인

>conda env list

 

5. 생성된 가상환경 진입

> conda activate mm32Bit

 

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2023. 9. 18. 14:59
반응형

며칠간 유니티 가격정책(https://www.asiatime.co.kr/article/20230918500098#_mobwcvr)

 

[e와글] '가격 정책 논란'에 백기 든 유니티⋯ 개발자들은 여전히 '냉소'

유니티 테크놀러지 수수료 정책 변경 발표 유니티 "고객 피드백 받아 정책을 변경할 예정" 누리꾼 "잃어버린 신뢰 되찾기 쉽지 않아 보여" [아시아타임즈=황수영 기자] 게임 설치 횟수를 기준으

www.asiatime.co.kr

 

때문에 논란(?)이 있었다.

 

그래서, 급하게 현재 프로젝트 사용중인 QT에 대한 라이선스에 대해서 다시 점검을 하였습니다.

 

1. 라이선스

- 이해하기 쉽게 관점을 "내 코드(제품)를 오픈해야 하는가?"로 설정, 오픈하기 싫으면 비용을 지불

 

1.1 GPL (라이센스 라이브리) 사용
- 상용, 비상용 여부를 떠나서 부분 공개가 아닌 2차 저작물 전체 공개가 원칙
- 사용방법(정적링크과 동적링크)에 상관없이 2차 저작물의 전체 소스공개의 의무가 있음. 
(단, 배포하지 않는다면, 즉, 나 혼자 사용한다면 아무도 모르는데 공개할 필요 없겠죠^^)

 

경험담)

웹서비스 개발 초기에 GPL 라이선스때문에 이슈(?)가 있었음
즉, GPL이 적용된 componet를 사용하여 웹서비스를 개발하면, 웹서비스 코드 전체 공개의무?
결론은 공개할 필요 없다. 왜냐면, 웹서비스를 사용하는 사용자 PC에 배포되는 것이 아니다.
하지만, 지금은 AGPL(Affero General Public License), OSL(Open Software License)등 라이센스가 생기면서, 
웹서비스 개발에도 배포로 보아 코드 전체 공개 의무가 생김(잘 살펴봐야 함)

결론, GPL은 절대사용하지 말아라.

 

1.2 LGPL (라이선스 라이브리) 사용
- GPL이 너무 타이트(?)하다 보니, 사용방법에 따라 공개의무 결정과 변경된 부분만 공개하는 LGPL 라이선스 생김
- 사용방법을 동적링크로만 한다면, 소스 공개 의미가 없음
하지만, 정적링크로 사용한다면, 소스 공개 의무는 없지만, 모든 OBJECT 코드를 제공해야함(보안상 문제)

 

2. QT 라이센스

- https://www.qt.io/licensing/open-source-lgpl-obligations

- 라이선스 정책(듀얼라이선스):  GPL-3.0, LGPL-3.0, 상업(commercial)
- GPL-3.0 사용: 개발된 모든 코드(내코드+라이브러리코드) 공개 의무 발생
- LGPL-3.0 사용: 동적링크로만 사용한다면 코드 공개 의무 없음, 
단, QT 라이브러리를 수정하여 사용하면, 수정된 부분에 대한 공개의무

- 결론: LGPL만 동적으로 사용하자.

 

3. QT LGPL 사용방법

- https://www.qt.io/product/features#js-6-3

 

Qt Features, Framework Essentials, Modules, Tools & Add-Ons

See the features of the latest Qt version to see new functionality, which development platforms, operating systems and coding languages are supported.

www.qt.io

 

- 위와 같이 라이선스 모델을 확인하고 개발을 진행하면 최대한 실수를 줄일수 있음

 

 

 

참고: https://www.olis.or.kr/license/licenseOSI.do?mapcode=010001&page=1. 

 

 

 

 

반응형
posted by choiwonwoo
:
MINERVA/Python 2023. 9. 16. 18:24
반응형

1. 기능 설명

- conda와 pip는 패키지 관리를 한다.

- pip install <패키지명> , conda install -c  conda-forge <패키지명> 

- pip repository는 https://pypi.org/이고, conda repository는 https://conda-forge.org/, https://repo.anaconda.com/pkgs/이다.

 

2. 차이점

- pip와 conda는 패키지를 가져오는 곳이 다름(당연함^^)

- 패키지 안정성(?)은 conda가 더 좋음, pip는 가끔 소스를 내려받아 cpp빌드를 하면서 문제가 발생하지만,conda는 os환경에 적합하게 미리 빌드된 패키지를 설치.(conda는 패키지 빌드시 의존성을 고려하기 때문에 사용하기 쉽고, 일괄 업데이트도 쉽다.(conda update --all))

- 하지만, conda는 pip보다 오래된(?) 버젼일수 있음

 

2. 정리

- anaconda 환경에는 가급적 pip를 사용하지 않는 것이 좋다. 왜냐면, 패키지 의존성(Dependency)에 문제 생김

- conda를 통해서 최대한 설치하고, 없으면 pip를 하용하지만, 추후 conda를 통해서 지원한다면, pip를 통해서 설치된 버젼을 제거하고, conda를 통해서 재설치를 추천 함.

 

 

반응형
posted by choiwonwoo
:
MINERVA/ETC 2023. 8. 22. 23:10
반응형

구형 LG노트북을 테스트 장비로 전환하기 위해, WINDOW 7이 설치되어 있던 장비에 WINDOW 10을 설치했더니, 일부 드라이버를 찾아 설치하는데 엄청난(?) 시간을 소비 하였음 ㅠㅠㅠㅠ

 

그런데, 옆에 동생을 통해서 알게 된 TOOL이 있어 정리하여 공유합니다.

 

http://www.iobit.com/en/driver-booster.php

 

Driver Booster 10 Free: Official Free Driver Updater Tool for Windows 2023

 

www.iobit.com

무료버전과 유료버전이 있는데, 무료 버전을 설치하여서 업데이트를 진행하여도 무리가 없습니다.

무료버전과 유료버전의 차이는 확인된 미설치/업데이트 필요 드라이버를 무료버전은 한번에 업데이트 않된다는 것 이외에는 없습니다.

 

개인적으로 매우 만족스러운 툴입니다.

반응형
posted by choiwonwoo
:
MINERVA/Python 2023. 8. 21. 20:02
반응형

기본 가상환경에서의 패지지 관리와 유사하지만, 

 

 

[Python] 패키지 일괄 업데이트

사용중인 패키지를 일괄 업데이트 하기 위해서 pipupgrade(파이썬 패키지 관리자)가 필요합니다. 1. pip 업그레이드 pipupgrade(파이썬 패키지 관리자)를 사용하기 위해서는 최신버젼으로 업그레이드를

choiwonwoo.tistory.com

Anaconda 가상 환경에서 패키지 관리 방법을 정리하면 아래와 같습니다.

[참조]

 

 

 

[Anaconda] 가상환경(virtual environment) 관리

가상환경을 제공하는 아나콘다(Anaconda)에서 필수적인 명령어를 정리하고자 합니다. 1) 버전 확인 [Anaconda Prompt(anaconda3)] (base) D:\NextTime\cwwDev>conda -V conda 4.13.0 2) 라이브러리(패키지) 설치, 업데이트

choiwonwoo.tistory.com

 

1.Anaconda prompt

2. 가상환경(anaconda) 업데이트 진행

- 진행순서: conda -> python -> pip --> 패키지 업데이트

 

2.1 현재 상용중인 환경 확인

conda/python/pip 버젼확인

2.2 업데이트

conda 업데이트
conda 환경에서 사용하는 python 업데이트
conda 환경에서 사용하는 pip 업데이트
conda 환경에 설치된 패키지 업데이트

3. conda 기본 명령어

 

3.1 설치된 패키지 확인

> conda list

3.2 사용중인(이미 생성된) 가상환경 확인

>conda env list

이외 기본적인 명령어는 위에 링크된 가상환경 관리 부분을 보면 쉽게 이해가 될것이라고 생각됩니다.

 

4. 정리

라이브 서비스를 도커(Docker)로 넘겨서 관리를 하기는 하지만, 개인적인 경험으로 개발단계에서는 아나콘다를 사용하는것이 직관적이면서 관리가 쉬운것으로 생각됩니다.

 

 

 

반응형
posted by choiwonwoo
:
MINERVA/Python 2023. 8. 20. 19:26
반응형

사용중인 패키지를 일괄 업데이트 하기 위해서 pipupgrade(파이썬 패키지 관리자)가 필요합니다.

 

1. pip 업그레이드

pipupgrade(파이썬 패키지 관리자)를 사용하기 위해서는 최신버젼으로 업그레이드를 진행

 

>python.exe -m pip install --upgrade pip

Collecting pip
  Using cached pip-23.2.1-py3-none-any.whl (2.1 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.2.3
    Uninstalling pip-20.2.3:
      Successfully uninstalled pip-20.2.3
Successfully installed pip-23.2.1

 

2. pipupgrade 설치

>  pip install pipupgrade

Requirement already satisfied: pipupgrade in d:\dev\python39\lib\site-packages (1.12.0)
Requirement already satisfied: pip in d:\dev\python39\lib\site-packages (from pipupgrade) (23.2.1)
Requirement already satisfied: bpyutils in d:\dev\python39\lib\site-packages (from pipupgrade) (0.5.8)

 

3. 설치된 패키지 확인

>pipupgrade --check

이 명령을 실행하면 설치된 패키지들 중에서 업그레이드 가능한 패키지들의 목록이 표시되며, 사용자의 승인하에 업그레이드를 진행할 수 있습니다.

 

4. 일괄 업데이트 진행

>pipupgrade --verbose --latest --yes

 

5. 정리

개인적은 경험으로 C/C++과 비교해서 파이썬이 좋은 점이 패키지(라이브러리) 버젼관리가 쉽다는 점이다.

물론, 아주 가끔 파이썬 신버전에서 동작하지 않는 패키지가 있기는 했지만. 그래도 단점보다는 장점이 많아 보입니다.

 

반응형
posted by choiwonwoo
:
MINERVA/Python 2023. 8. 20. 19:13
반응형

pip 업데이트를 진행시, 위와 같은 경고(warning)을 보게되는 경우가 있습니다.

개발을 진행하는 데는 문제가 없지만, 기분이 깔끔하지 않기에 아래와 같은 경고 메시지가 보였을때는 아래와 같이 처리하 처리하면 됩니다.

발생원인은 업데이트를 진행하는 디렉토리에 먼가 이상한, 유효한지 않은(invalid) 내용이 있기 때문입니다.

그래서 경고가 발생한 패키지의 디렉토리를 확인해보면, 이상한 디렉토리가 존재하는 것을 확인 할수 있습니다.

임시디렉토리(~)가 생긴 원인은 이전에 업데이트를 진행하면서 실패하였을때 생긴것으로 추정됩니다.

일단 위의 임시디렉토리(~)를 모두 지워주세요.

 

그리고, 다시 업데이트 진행하여주시면 경고문 없이 진행되는 것을 확인하실수 있습니다.

 

 

감사합니다.

반응형
posted by choiwonwoo
:
MINERVA/Python 2023. 8. 20. 18:56
반응형

주기적으로 프로젝트 파이썬 패키지를 일괄 업데이트를 하는데, 갑자기(?) 아래와 같이 pip가 또(?) 말썽을 부리네요. 

왜 이게 발생하는지 정확히는 모르겠지만, 발생하는 몇가지 패턴(?)은 있는것 같다.

 

그래도 일단은 일이 급하니 위와 같은 에러 발생시 해결하는 방법을 간단히 정리하자 합니다.

 

해결방법은 아래와 같습니다.

>> python -m ensurepip

 

 

반응형
posted by choiwonwoo
: