PyPI 패키지를 만들고 테스트하고 Github 작업으로 발표합니다 (제1부분)
setup.py
파일을 만들어서 패키지를 정의하고 PyPI(python 패키지 인덱스)에 업로드하는 것입니다. 수백만 사용자가 pip
를 통해 설치할 수 있도록 합니다.우리의 코드를 작성하다
우선,python 패키지를 만들어야 합니다.나는 네가 문자열을 상호작용하고 조작할 수 있도록 하는 아주 간단한 소프트웨어 패키지를 가지고 있다. 예를 들어 lodash.
나는 PyCharm을 나의 IDE 선택으로 사용할 것이지만, 네가 원하는 모든 것 (VScode, Spyder, IDLE,Vim 등) 을 마음대로 사용할 수 있다.
내 폴더는 내 pip 패키지의 이름이기 때문에
pydash
로 명명될 것이다.pydash
폴더에 pydash
라는 다른 폴더를 만듭니다.이 새 pydash
폴더는 우리의 모든 코드를 저장할 것입니다.이 폴더에 __init__.py
파일을 만듭니다.우리는 그 서류를 편집할 것이다.class PyDash:
def __init__(self):
pass
@staticmethod
def lower(string: str):
"""
Converts a string to lowercase
"""
return string.lower()
@staticmethod
def upper(string: str):
"""
Converts a string to uppercase
"""
return string.upper()
@staticmethod
def title(string: str):
"""
Converts a string to titlecase
"""
return string.title()
@staticmethod
def kebab(string: str):
"""
Converts a string to kebabcase
"""
return string.replace(" ", "-").lower()
패키지 테스트
test.py
폴더 (index.py
를 포함하는 폴더) 외에 pydash
, __init__.py
의python 파일이나 원하는 파일을 만듭니다.이렇게 패키지를 가져오고 테스트할 수 있습니다.from pydash import PyDash
print(pydash.lower("TEST"))
print(pydash.upper("test"))
print(pydash.title("there WAS a MAN!"))
print(pydash.kebab("Generate a Slug for my Post"))
OUTPUT:
test
TEST
There Was A Man!
generate-a-slug-for-my-post
증가
setup.py
우리의 포장은 매우 쓰기 좋다!테스트python 파일을 삭제할 수 있습니다.우리는 이미 이 가방을 PyPI에서 실행할 준비가 되어 있다.단 한 가지 문제.PyPI는 프로젝트에 대해 아무것도 모르기 때문에, 몇 가지 알려 드리겠습니다.프로젝트 디렉터리에 setup.py
라는 파일을 만듭니다.이 디렉토리 목록은 다음과 같은 이점을 제공합니다.- pydash
| - pydash
| - __init__.py
| - setup.py
우선, PyPI가 아닌 이름을 결정해야 합니다.불행히도, PyDash가 이미 존재하기 때문에, 나는 그것의 이름을 사용할 것이다. pydash-arnu515
일단 당신의 이름으로 설정하면 setup.py
에 내용을 추가합니다
추가 파일 생성
이제 README.md
파일을 추가하여 setup.py
참조할 수 있도록 합니다
제출하지 말아야 할 파일을 제출하지 않도록 .gitignore
를 추가합니다
__pycache__/
build/
dist/
*.egg-info/
*.egg
venv
I recommend marking these directories as
excluded
in PyCharm to avoid getting errors like "Duplicated Code Fragment".
현재 마지막 파일은 LICENSE
입니다.setup.py
에서 나는 나의 허가증을 MIT
로 설정했기 때문에 이것이 바로 내가 원하는 것이다
이것이 우리의python 패키지입니다
unittest
를 사용하여 소프트웨어 패키지를 테스트합니다.
Unittest는 패키지를 테스트할 수 있는 내장python 모듈입니다.이 박문은 너에게 소개하지 않았다unittest
.이를 위해 인터넷에는 아직도 많은 강좌가 있다.여기서python 패키지를 테스트하는 방법을 보여 드리겠습니다
우리의 테스트를 만듭니다.
프로젝트 폴더에 tests
라는 폴더를 만들고 __init__.py
라는 파일을 만듭니다.당신의 폴더는 다음과 같습니다:
- pydash
| - pydash
| - __init__.py
| - tests
| - __init__.py
| - setup.py
Since
tests
is a package, it will be included in our pip package becausesetuptools.findpackage
will add it to our pip package. This is not what we want, so let's do a quick change insetup.py
packages=find_packages(exclude="tests")
첫 번째 테스트 추가
test_string.py
라는 파일을 만듭니다
PyCharm은 내가 단원 테스트를 자동으로 실행할 수 있도록 허락하지만, 나는 이렇게 하지 않을 것이다. 왜냐하면 모든 사람이 PyCharm을 사용하는 것은 아니기 때문이다.대신 명령줄을 사용하여 응용 프로그램을 테스트합니다
cd tests
python3 -m unittest discover
The
discover
keyword tellsunittest
to find any files with the name oftest_*.py
and run the unittests inside them.
오류 성명을 받을 수 있습니다:
No module named pydash
우리는 setup.py
pydash를 설치해서 이 문제를 해결할 수 있습니다
python3 setup.py install
cd tests
python3 -m unittest discover
당신의 테스트는 이미 성공적으로 실행되었을 것입니다
TestPyPI에 업로드
지금, 재미를 위해, 등등, 무엇이 TestPyPI입니까?TestPyPI는 PyPI의 단독 실례입니다. 가방을 먼저 테스트하기 위해서입니다. 우선 가방을 거기로 전송합시다.p>
먼저 몇 개의 패키지를 설치해야 합니다
pip install twine wheel
TestPyPI에 계정을 만들어야 합니다.TestPyPI로 가서 계정을 만들거나 로그인하세요.당신의 이메일 주소를 확인해야만 소포를 올릴 수 있습니다
액세스 토큰을 만듭니다.
전자 우편과 비밀번호를 계속 입력하지 않고 TestPyPI에 업로드할 수 있는 액세스 카드를 만듭니다.이동API tokens in Account Settings 및 전체 액세스 API 토큰을 생성합니다.이름을 지정하고 전체 계정으로 범위를 설정합니다
Copy your API Token and store it in a safe place once it is displayed to you, as it will never be displayed to you again
It is VERY important that you don't share your API token and don't commit it to git because anyone with access to that token can upload packages to your account.
패키지를 구성하여 TestPyPI에 업로드
이제 즐거움이 왔다!다음 명령을 사용하여 가방을 만듭니다:
python3 setup.py sdist bdist_wheel
현재 디렉터리에 dist
라는 새 폴더를 만듭니다
이 폴더를 twine
로 업로드합시다:
python3 -m twine upload -r testpypi dist/*
For the username enter
__token__
, and for the password, paste your API Token.
봐봐!패키지가 TestPyPI에 성공적으로 업로드되었습니다
주소 보기https://test.pypi.org/project/YOUR_PROJECT_NAME
예를 들면 https://test.pypi.org/project/pydash-arnu515
PyPI에 업로드
현재 우리는 가방을TestPyPI에 전송했습니다. 우리는 일반적인 PyPI에 대해 같은 일을 할 수 있습니다.PyPI.org에 계정을 만들고 API Token
패키지 재구성:
python3 setup.py sdist bdist_wheel
및 PyPI에 업로드:
python3 -m twine upload dist/*
For the username enter
__token__
, and for the password, paste your API Token from PyPI.
저희 끝났어요.
축하합니다!PyPI에서 새 패키지가 실행되고 있습니다.Github 작업의 자동화
Reference
이 문제에 관하여(PyPI 패키지를 만들고 테스트하고 Github 작업으로 발표합니다 (제1부분)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/arnu515/create-a-pypi-pip-package-test-it-and-publish-it-using-github-actions-part-1-3cp8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)