2023년 10월 21일 토요일

[2023-10-21] Python 3.12.0 버전 발표(Release Date: Oct. 2, 2023)

 

Python 3.12.0 버전 발표(Release Date: Oct. 2, 2023)

요약 : 파이썬 3.12, f 문자열 개선 등 개발 편의성 향상

Release Note

python 3.11 과 3.12 의 주요 기능 비교

* f 문자열은 복잡한 문자열 출력을 위한 문자열 형식화 기능의 하나다. 
  문자열 앞에 알파벳 f를 붙인 후 중괄호({}) 안에 공백 크기 지정 등 
  고급 형식지정 문자열을 입력해 바로 사용할 수 있다.

* 신규 버전에서는 기존에 지원하지 않던 여러 줄의 표현식, 주석, 백슬래시 및 유니코드 이스케이프 시퀀스를 
  처리할 수 있는 기능이 추가됐다.

* 표준라이브러리도 효율적인 활용을 목표로 수정이 이뤄졌다. 
  정리, 유용성 및 정확성에 중점을 둔 이번 수정작업에서 디스트유틸(distutils)패키지 등 더 이상 사용하지 않는 API는 제거되며 
  패스리브(Pathlib) 클래스가 서브클래싱을 지원하며, 명령줄 인터페이스가 모듈 SQLite3에 추가됐다.

* 더불어 성능 개선 작업을 통해 내장 함수의 하나인 이즈인스턴스(isinstance)는 약 2~20배 속도 향상 됐으며, 
  비동기 I/O(asyncio) 패키지도 일부 벤치마크에서 약 75% 빨라진 것으로 나타났다. .

* 파이썬 3.12버전은 인터프리터별 전역 해석기 잠금(GIL)을 적용해 여러 파이썬 스레드가 동시에 실행되는 것을 방지한다. 
  이를 통해 여러 CPU 코어를 보다 효율적으로 사용할 수 있는 하위 인터프리터 생성이 가능하다.

* 이 밖에도 리눅스 커널 성능 측정 도구(perf)에서 C파이썬(CPython)을 지원하는 등 
  성능 개선 및 편의성 지원을 위한 업데이트가 이뤄졌다.

* 출처 : https://zdnet.co.kr/view/?no=20231004094411
  • 공식 발표 내용
    * More flexible f-string parsing, allowing many things previously disallowed (PEP 701).
    * Support for the buffer protocol in Python code (PEP 688).
    * A new debugging/profiling API (PEP 669).
    * Support for isolated subinterpreters with separate Global Interpreter Locks (PEP 684).
    * Even more improved error messages. More exceptions potentially caused by typos now make suggestions to the user.
    * Support for the Linux perf profiler to report Python function names in traces.
    * Many large and small performance improvements (like PEP 709 and support for the BOLT binary optimizer), delivering an * estimated 5% overall performance improvement.
    
    

pyenv로 python 13.2.0 설치하기

$ pyenv install --list
---
  3.11.1
  3.11.2
  3.11.3
  3.11.4
  3.11.5
  3.11.6
  3.12.0
  3.12-dev
  3.13.0a1
  3.13-dev
---

$ pyenv install 3.12.0
python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
Downloading Python-3.12.0.tar.xz...
-> https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz
Installing Python-3.12.0...
python-build: use readline from homebrew
python-build: use ncurses from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.12.0 to /Users/keulstar/.pyenv/versions/3.12.0
---

$ pyenv virtualenv 3.12.0 py312
$ pyenv local py312      : 로그인 사용자의 파이썬 버전 설정 
$ pyenv global py312     : 전체 사용자의 파이썬 버전 설정 
$ pyenv activate py312   : 현재 세션의 파이썬 버전 설정

vscode에서 python interpreter 설정하기 

shift + cmd + p 를 눌러서 아래를 실행하고,
입력란데 python select 하고 Python: 인터프리터를 선택한다.



mac에 설치된 python 목록이 아래와 같이 나온다. 원하는 버전을 선택하면 된다.

나는 py312로 가상환경을 만들었기 때문에 이것을 선택했다.


이상 클스 였습니다.

라벨: , , , , ,

2022년 12월 30일 금요일

pyenv, pyenv-virtualenv & python & poetry


pyenv, pyenv-virtualenv & python & poetry

1. pyenv & python 설치
$ brew install pyenv
$ pyenv install --list
$ pyenv install 3.11.1
$ pyenv global 3.11.x
$ pyenv local 3.11.x
2. pyenv-virtualenv & 가상환경 만들기
$ brew install pyenv-virtualenv
... installing....

$ vi ~/.zshrc
-- 아래 추가 : 이미 있을 수 있음 --
# pyenv command
eval "$(pyenv init -)" 

# pyenv-virtualenv command
eval "$(pyenv virtualenv-init -)" 
$ source ~/.zshrc

# create virtual environment
$ pyenv virtualenv PYTHON-VERSION ENVIRONMENT-NAME

# check available virtual environments in local
$ pyenv virtualenvs

# delete VIRTUAL ENVIRONMENT
$ pyenv uninstall ENVIRONMENT-NAME

# activate virtual environment
$ pyenv activate ENVIRONMENT-NAME

# GET OUT OF VIRTUAL ENVIRONMENT
$ pyenv deactivate
3. python 필수 라이브러리
  • 가상환경을 활성화 하고 하면 된다. 패키지는 가상환경에만 적용된다.
# install and upgrade pip
$ python3 -m pip install --upgrade pip  혹은 
$ pip install --upgrade pip

# check available packages
$ pip list
  필요한 패키지는 가상환경에서 다시 설치해야 한다.

# 필수 패키지 
$ pip install package1, package2, ...
4. poetry
  • 목적 : 프로젝트<디렉토리>별 패키지를 설치하고 관리해준다.
  • poetry 설치
    • # poetry curl 로 최신버전 설치하기
      $ curl -sSL https://install.python-poetry.org | python3 -
      
      # brew 로 설치하기
      $ brew install poetry
      

  • python 3.10.4 까지는 되나, 3.11.x 부터 안된다. poetry가 아직 python 3.11.x 는 지원하지 않음
    • 문제
      에러내용 : from cleo import Application as BaseApplication .....
      
    • 해결
      $ cd ~/.poetry/lib/poetry/_vendor
      $ cp -R py3.10 py3.11

라벨: , , ,