파이썬에서 특정 패키지에 속한 클래스 리스트를 확인하는 방법에는 여러 가지가 있습니다. 패키지의 구조를 탐색하고 내부의 클래스를 나열하는 방법을 정리해 드릴게요.

1. dir() 함수 사용

 

dir()을 사용하면 특정 패키지 내부에 어떤 객체(클래스, 함수, 변수 등)가 있는지 확인할 수 있습니다.

 

예제:

import sklearn

print(dir(sklearn))  # sklearn 패키지 내부의 객체 목록 출력

이렇게 하면 sklearn 패키지에 포함된 모듈과 클래스, 함수 등이 나열됩니다.

2. inspect 모듈 사용

 

inspect 모듈을 활용하면 특정 패키지나 모듈에서 클래스만 필터링해서 볼 수 있습니다.

 

예제:

import inspect
import sklearn.linear_model  # 예제: sklearn의 linear_model 모듈을 탐색

# linear_model 내부에서 클래스만 추출
classes = [name for name, obj in inspect.getmembers(sklearn.linear_model, inspect.isclass)]
print(classes)

이 코드를 실행하면 sklearn.linear_model 모듈에 포함된 클래스 목록을 출력합니다.

3. pkgutil 모듈로 하위 모듈 탐색

 

특정 패키지의 서브 모듈까지 탐색하고 싶다면 pkgutil을 활용할 수 있습니다.

 

예제:

import pkgutil
import sklearn

# sklearn 패키지 내부의 하위 모듈 찾기
modules = [module.name for module in pkgutil.iter_modules(sklearn.__path__)]
print(modules)

이 코드는 sklearn 패키지의 서브 모듈 목록을 출력합니다.

4. help() 사용

 

help(패키지명)을 사용하면 패키지 내부의 클래스 및 모듈 정보를 확인할 수 있습니다.

 

예제:

import sklearn.linear_model

help(sklearn.linear_model)

이렇게 하면 sklearn.linear_model 내부의 클래스와 함수에 대한 설명을 출력합니다.

5. __dict__ 사용

 

대부분의 패키지와 모듈은 __dict__ 속성을 가지고 있으며, 이를 통해 내부의 정의된 객체들을 확인할 수 있습니다.

 

예제:

import sklearn.linear_model

print(sklearn.linear_model.__dict__.keys())  # 내부 객체 목록 출력

6. dir() + getattr() 조합

 

패키지 내부의 객체를 getattr()을 통해 직접 가져와서 클래스인지 확인하는 방법입니다.

 

예제:

import sklearn.linear_model
import inspect

# sklearn.linear_model 내부의 클래스만 필터링
for name in dir(sklearn.linear_model):
    obj = getattr(sklearn.linear_model, name)
    if inspect.isclass(obj):
        print(name)

🔹 결론

단순한 목록 확인: dir(패키지명)

클래스 필터링: inspect.getmembers(모듈명, inspect.isclass)

서브 모듈 탐색: pkgutil.iter_modules(패키지명.__path__)

상세 설명 확인: help(패키지명)

 

필요한 방법을 선택해서 사용하면 됩니다! 😊

맥에서 여러 개의 파이썬 버전을 관리하는 방법은 크게 **pyenv**를 사용하는 방법과 **conda**를 사용하는 방법이 있습니다. 가장 유연하게 버전을 관리하려면 **pyenv**를 추천합니다.

1. pyenv를 이용한 파이썬 버전 관리 (추천)

 

pyenv는 사용자가 원하는 버전의 파이썬을 설치하고, 프로젝트별로 다른 버전을 사용할 수 있도록 도와줍니다.

 

설치 방법

# Homebrew 업데이트
brew update

# pyenv 설치
brew install pyenv

# pyenv 환경 변수 설정 (zsh 사용 시)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init --path)"' >> ~/.zshrc

# 적용
source ~/.zshrc

파이썬 버전 설치

# 설치 가능한 파이썬 버전 확인
pyenv install --list

# 특정 버전 설치 (예: 3.11.6)
pyenv install 3.11.6

# 전역(global) 기본 파이썬 버전 설정
pyenv global 3.11.6

# 특정 프로젝트 폴더에서만 특정 버전 사용
pyenv local 3.10.6  # 현재 폴더에서만 3.10.6 사용

# 현재 사용 중인 버전 확인
pyenv versions
python --version

2. conda를 이용한 관리

 

conda는 가상 환경과 패키지 관리를 함께 제공하는 도구로, 데이터 과학이나 머신러닝을 한다면 유용합니다.

 

설치 방법

# Miniconda 설치 (경량 버전)
brew install --cask miniconda

# conda 환경 변수 설정 (zsh 사용 시)
echo 'export PATH="$HOME/miniconda3/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

파이썬 버전 관리

# 새로운 환경 생성 (예: 파이썬 3.9 사용)
conda create --name py39 python=3.9

# 환경 활성화
conda activate py39

# 환경 비활성화
conda deactivate

# 설치된 환경 목록 보기
conda env list

3. macOS 기본 파이썬 사용 (비추천)

 

맥OS에는 기본적으로 /usr/bin/python3가 설치되어 있지만, 시스템 의존성이 많아서 직접 버전을 관리하는 것은 어렵습니다. 따라서 pyenvconda를 사용하는 것이 좋습니다.

추천 방법 요약

일반적인 개발용pyenv

데이터 과학, 머신러닝conda

 

어떤 방법이든 설정을 마친 후, python --version으로 제대로 적용되었는지 확인하세요! 🚀

🚀 파이썬 의존성을 빠르고 쉽게 해결하는 방법

 

Python 프로젝트에서 의존성 충돌이나 설치 문제를 신속하게 해결하는 방법을 정리해볼게요.

1️⃣ 가상 환경(venv, conda) 설정 후 패키지 정리

 

💡 가상 환경을 만들고 깨끗한 상태에서 다시 설치

가끔 기존 환경에 여러 패키지가 엉켜서 문제가 생길 수 있어요. 새 가상 환경을 만들고 필요한 패키지만 설치하면 의존성 충돌을 줄일 수 있어요.

 

🔹 venv 사용 (Python 기본 제공)

python -m venv new_env
source new_env/bin/activate  # Windows는 new_env\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt

이렇게 하면 새 환경에서 깨끗하게 시작할 수 있어요.

 

🔹 Conda 사용 (더 강력한 환경 관리)

conda create -n new_env python=3.10
conda activate new_env
pip install -r requirements.txt

Conda는 패키지 간 의존성을 더 잘 관리해서, 충돌을 줄이는데 도움이 돼요.

2️⃣ pip 충돌 해결: 패키지 재설치

 

💡 패키지를 강제로 다시 설치하여 충돌 해결

pip freeze > installed_packages.txt  # 현재 설치된 패키지 리스트 백업
pip uninstall -r installed_packages.txt -y  # 모든 패키지 제거
pip install --upgrade pip setuptools wheel  # 최신 pip 설치
pip install -r requirements.txt  # 의존성 다시 설치

이렇게 하면 기존 환경에서 의존성 문제를 한 번에 해결할 수 있어요.

3️⃣ 패키지 버전 문제 해결

 

💡 의존성 충돌 시, 문제 패키지 확인 후 버전 고정

pip check  # 현재 환경에서 충돌하는 패키지 확인
pip install "패키지명==특정버전"  # 특정 버전으로 맞추기

예를 들어, llama-indexnumpy와 충돌하면:

pip install numpy==1.23.5

이런 식으로 버전을 맞추면 해결될 수 있어요.

4️⃣ FastAPI, LangChain, LlamaIndex 등 최신 패키지 충돌 해결

 

최신 AI 관련 패키지(LlamaIndex, LangChain 등)는 종종 의존성 문제를 일으켜요. pip 대신 pip-compile을 사용하면 의존성을 자동으로 정리해줘요.

pip install pip-tools
pip-compile requirements.in  # 의존성 자동 정리
pip install -r requirements.txt

5️⃣ Docker 활용 (최후의 방법)

 

의존성 충돌이 너무 심하면 Docker를 사용해 완전한 격리된 환경에서 실행하는 것이 가장 좋은 방법이에요.

FROM python:3.10
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "your_script.py"]

이런 식으로 하면, 시스템 의존성과 관계없이 동일한 환경을 유지할 수 있어요.

📌 결론

 

빠르게 해결하고 싶다면?pip check 후 버전 맞추기

깨끗한 환경에서 재설치?venv 또는 conda 활용

자동으로 의존성을 정리하고 싶다면?pip-compile 사용

100% 충돌 없이 실행하려면?Docker 사용

 

🚀 venv + pip-compile 조합을 먼저 시도하고, 그래도 안 되면 Docker를 고려하는 게 가장 현실적인 해결책!

어떤 문제가 있는지 더 구체적으로 말해주면, 추가 해결 방법을 알려줄 수 있어! 🔥

설치

pip install [package name]

 

삭제

pip uninstall [package name]

 

업데이트

pip upgrade [package name]

 

설치된 패키지 목록

pip list

 

패키지 정보 확인

pip show [package name]


다음 패키지를 쓰면 국가코드를 입력으로 넣어 타임존을 알아낼 수 있다.


설치 방법

pip install pytz



참고 링크 및 코드

http://pytz.sourceforge.net/



Country Information

>>> from datetime import datetime, timedelta
>>> from pytz import timezone
>>> import pytz
>>> print(' '.join(pytz.country_timezones['nz']))
Pacific/Auckland Pacific/Chatham

The Olson database comes with a ISO 3166 country code to English country name mapping that pytz exposes as a dictionary:

>>> print(pytz.country_names['nz'])
New Zealand


+ Recent posts