스킬 python-packaging
📦

python-packaging

낮은 위험 ⚙️ 외부 명령어🌐 네트워크 접근📁 파일 시스템 액세스

PyPI 를 사용하여 Python 패키지 빌드 및 배포하기

또한 다음에서 사용할 수 있습니다: ActiveInferenceInstitute,wshobson

Python 개발자들은 복잡한 패키징 워크플로우와 일관성 없는 프로젝트 구조로 어려움을 겪습니다. 이 스킬은 pyproject.toml 과 setuptools 와 같은 현대적인 표준을 사용하여 전문적인 Python 패키지를 생성하는 데 필요한 완전한 지침을 제공합니다.

지원: Claude Codex Code(CC)
⚠️ 68 나쁨
1

스킬 ZIP 다운로드

2

Claude에서 업로드

설정 → 기능 → 스킬 → 스킬 업로드로 이동

3

토글을 켜고 사용 시작

테스트해 보기

"python-packaging" 사용 중입니다. Click 과 pandas 종속성, 개발용 pytest, CLI 엔트리 포인트가 포함된 'data-utils' 패키지에 대한 pyproject.toml 생성

예상 결과:

빌드 시스템 구성, 프로젝트 메타데이터, 버전 제약이 있는 종속성, 선택적 개발 종속성, CLI 스크립트 엔트리 포인트, black, ruff 및 pytest 에 대한 도구 구성이 포함된 완전한 pyproject.toml.

"python-packaging" 사용 중입니다. 패키지를 PyPI 에 게시하기 전에 TestPyPI 에 먼저 게시하려면 어떻게 하나요?

예상 결과:

단계별 지침: (1) twine 설치, (2) python -m build 로 패키지 빌드, (3) twine check 로 유효성 검사, (4) twine upload --repository testpypi 로 TestPyPI 에 업로드, (5) TestPyPI 에서 설치 테스트, (6) 준비되면 프로덕션 PyPI 에 게시.

보안 감사

낮은 위험
v1 • 2/24/2026

This skill consists entirely of markdown documentation teaching Python packaging best practices. Static analyzer flagged 118 patterns (backticks, URLs, config examples) that are documentation content, not executable code. All findings are false positives from code examples in fenced markdown blocks. No actual security risks detected.

2
스캔된 파일
909
분석된 줄 수
6
발견 사항
1
총 감사 수
중간 위험 문제 (1)
Documentation flagged as code execution
Static analyzer detected backtick characters in markdown documentation. These are fenced code block delimiters in documentation, not actual shell execution. The skill contains no executable Python or shell code - only educational content about Python packaging practices.
낮은 위험 문제 (2)
Documentation URLs flagged as network activity
Static analyzer detected hardcoded URLs in documentation. These are reference links to PyPI, GitHub, and Python packaging resources - not actual network requests in code.
Configuration examples flagged as sensitive file access
Static analyzer detected .pypirc configuration file references. This is documentation teaching users how to configure PyPI authentication - not unauthorized file access.
감사자: claude

품질 점수

38
아키텍처
100
유지보수성
87
콘텐츠
31
커뮤니티
81
보안
91
사양 준수

만들 수 있는 것

라이브러리 작성자 배포

적절한 프로젝트 구조, 메타데이터 및 자동화된 배포 워크플로우를 갖춘 PyPI 에서 배포할 새 Python 라이브러리 생성

CLI 도구 배포

엔트리 포인트가 포함된 명령줄 도구를 패키징하여 pip 를 통해 실행 가능한 명령으로 쉽게 설치할 수 있도록 함

기업용 패키지 관리

여러 팀 및 저장소에서 코드를 구성하기 위한 개인 패키지 인덱스와 네임스페이스 패키지 설정

이 프롬프트를 사용해 보세요

기본 Python 패키지 구조 생성
src 레이아웃, setuptools 를 사용한 pyproject.toml, 기본 모듈 구조를 갖춘 'my-tool' 이라는 새 Python 패키지를 생성하는 것을 도와주세요. 테스트를 위해 pytest 를 포함하고 싶습니다.
기존 패키지에 CLI 엔트리 포인트 추가
유틸리티 함수가 있는 기존 Python 패키지가 있습니다. 사용자가 설치 후 명령줄에서 'mytool' 을 실행할 수 있도록 Click 을 사용하여 CLI 엔트리 포인트를 추가하는 방법을 보여주세요.
자동화된 PyPI 배포 구성
새 릴리스를 생성할 때 Python 패키지를 빌드하고 PyPI 에 게시하는 GitHub Actions 워크플로우를 생성하세요. 패키지 유효성 검사 및 TestPyPI 테스트 단계를 포함하세요.
모노레포용 네임스페이스 패키지 설정
회사 코드베이스를 네임스페이스를 공유하는 여러 패키지 (company-core, company-api, company-utils) 로 분할해야 합니다. 전체 프로젝트 구조와 pyproject.toml 구성을 보여주세요.

모범 사례

  • 설치되지 않은 소스 디렉토리에서 실수로 import 하는 것을 방지하기 위해 src/ 레이아웃 사용
  • 현대적인 패키징을 위한 PEP 621 을 따라 pyproject.toml 에 모든 메타데이터 정의
  • PyPI 에 게시하기 전 빈 가상 환경에서 패키지 설치 테스트

피하기

  • setup.py 를 기본 구성으로 사용하지 않기 - pyproject.toml 로 마이그레이션
  • 라이브러리에는 플랫 레이아웃 사용 금지 - 설치 없이 import 가능해짐
  • API 토큰이나 자격 증명을 커밋하지 않기 - PyPI 인증을 위해 환경 변수 사용

자주 묻는 질문

pyproject.toml 과 setup.py 의 차이점은 무엇인가요?
pyproject.toml 은 빌드 요구사항과 메타데이터를 하나의 파일에 선언하는 현대적인 표준 (PEP 518/621) 입니다. setup.py 는 실행 가능한 Python 코드를 사용하는 레거시 접근 방식입니다. 새 프로젝트는 setuptools 나 hatchling 같은 빌드 백엔드와 함께 pyproject.toml 을 사용해야 합니다.
PyPI 전에 TestPyPI 에 먼저 게시해야 하나요?
그렇습니다. 항상 TestPyPI 에 먼저 테스트하세요. TestPyPI 는 PyPI 의 기능을 미러링하는 별도의 인덱스입니다. 패키지를 여기에 업로드하고 깨끗한 환경에서 설치하여 모든 기능이 정상 작동하는지 확인한 후 실제 PyPI 에 게시하세요.
패키지에 데이터 파일을 포함하려면 어떻게 하나요?
pyproject.toml 의 [tool.setuptools.package-data] 섹션에서 package-data 구성을 사용합니다. '*.json' 또는 'templates/*.html' 과 같은 패턴을 지정하세요. 현대적인 Python 에서는 importlib.resources.files() 를 사용하여 런타임에 파일에 접근합니다.
첫 릴리스에서는 어떤 버전으로 시작해야 하나요?
초기 릴리스는 0.1.0 으로 시작하여 패키지가 초기 개발 단계임을 나타냅니다. 시맨틱 버전 (MAJOR.MINOR.PATCH) 을 사용하세요. 안정적이고 깨뜨리고 싶지 않은 공개 API 가 있을 때 1.0.0 으로 이동합니다.
git 태그에서 패키지를 자동으로 버전 관리할 수 있나요?
build-system.requires 에 setuptools-scm 을 사용합니다. pyproject.toml 에서 git 태그의 버전 정보를 읽어오도록 구성하세요. 이렇게 하면 버전이 git 기록과 일치하고 버전 관리가 자동화됩니다.
pip 로 설치할 수 있는 CLI 도구는 어떻게 만드나요?
[project.scripts] 섹션에서 엔트리 포인트를 정의합니다. 명령어를 Python 함수 경로에 매핑합니다 (예: 'mytool = my_package.cli:main'). 설치 후 사용자는 터미널에서 'mytool' 을 실행할 수 있습니다.

개발자 세부 정보

파일 구조