2023. 5. 3. 08:22ㆍit
해당 작업을 위해선 먼저 PIP 를 가입해야 한다. 가입 링크는 다음과 같다. 가입은 쉬우니 알아서 하길 바란다.
파이썬 pip install 패키지 만들기 전에 먼저 pip으로 일부 패키지를 먼저 선행해주어야 한다.
pip install setuptools
pip install wheel
pip install twine
해당 패키지가 설치가 되면, pip 패키지를 만들 준비가 완료되고, 본격적으로 패키지를 만들면 된다. 그리고 폴더를 만든다.
해당 폴더에 아래와 같은 2개의 파일 1개의 폴더를 만든다. 해당 파일에서는 README.md는 작성하지 않아도 된다.
data_lab 폴더를 열어서 해당 폴더를 2개의 파일을 넣는다. 해당 파일에는 패키지할 요소들을 넣어야 한다.
코드가 들어갈 부분은 hello_world.py 이고, __init__.py는 해당 패키지를 묶어주는 작업을 한다.
hello_world.py를 작성한다.
def hello_world():
print("hi?? hello?? 안녕~")
__init__.py를 작성한다. 해당 소스코드는 __all__=[ '파일명.py' ] 를 입력해야 한다. 파일명이다. 함수명이 아니고!
__all__=['hello_world']
그럼 패키지할 소스코드는 모드 작성되었다.
다시 상위 폴더로 올라간다. 그럼 해당 화면으로 다시 돌아 왔을 것이다.
setup.py를 열어서 작성해 준다. README.md는 작성하고 싶으면 작성해도 된다. 나는 작성해서 올렸다. 아무 글도 안썼으면 그냥 빈 화면으로 올라가니 걱정 안해도 된다. 단, 해당 코드에서는 README.md 에 빈 내용이 적혀있어도, 해당 파일은 반드시 존재해야한다.
from setuptools import setup
with open('README.md', encoding='utf-8') as f: # README.md 내용 읽어오기
long_description = f.read()
setup(
name='HelloWorld', #module 이름
version='0.0.0.1', # 버전 등록
long_description = long_description, # readme.md 등록
long_description_content_type = 'text/markdown', # readme.md 포맷
description='hello world 패키지이다.', # 패키지 설명
author='', # 참여자 등록
author_email='', # 이메일 등록
url='', # url 등록
license='MIT', # 라이센스 등록
python_requires='>=3.4', #파이썬 버전 등록
install_requires=[ 'boto3', 'pymongo'], # module 필요한 다른 module 등록
packages=['data_lab'] # 업로드할 module이 있는 폴더 입력
)
여기서 주의 사항은 한번 등록한 버전은 다시 재등록이 되지 않는다. 예를 들어 0.0.0.1 를 등록했다면, 해당 버전은 다시 등록이 불가능하다. 해당 패키지를 PIP 사이트에서 삭제해도 재등록이 불가능하다.
이제 다왔다. CMD 창을 연다. 그리고 해당 폴더로 위치한다. 해당 폴더의 위치는 여기다.
cd C:\Users\Desktop\pypi ( 내 경로이다. )
해당 경로로 이동했다면, 다음과 같은 명령어를 날려준다.
python setup.py bdist_wheel
그럼 다음과 같은 패키지들이 생길 것이다.
그리고 dist 폴더로 이동한다.
cd dist
해당 폴더에는 다음과 같은 파일이 존재한다.
해당 파일(whl)을 pip 사이트로 올리면 된다. 그 명령어는 다음과 같다.
Twine upload HelloWorld-0.0.0.1-py3-none-any.whl
그럼 PIP에서 가입한 ID와 PASSWORD를 입력하면 해당 패키지가 PIP 사이트에 등록이 된다.
'it' 카테고리의 다른 글
pynecone를 활용한 table 만들기 ( 내가 만든 커스텀 ) (0) | 2023.05.14 |
---|---|
Creating a table using Pynecone (Custom table) (0) | 2023.05.12 |
redis를 활용한 api 로그 count 관리 (0) | 2023.05.02 |
빙과 구글 서치 연동 하는 방법 ( 티스토리 가능 ) (0) | 2023.04.29 |
Redis를 활용한 Message Queue(Pub/Sub) 만들기 ( with python ) (0) | 2023.04.20 |