PyPI 패키지를 만들고 테스트하고 Github 작업으로 발표합니다 (제1부분)

13303 단어 pythonpipgithubdevops
PyPI 패키지를 만드는 것은 생각보다 쉽습니다. 패키지를 만드는 것은python 패키지, 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 because setuptools.findpackage will add it to our pip package. This is not what we want, so let's do a quick change in setup.py

packages=find_packages(exclude="tests")



첫 번째 테스트 추가


test_string.py라는 파일을 만듭니다





PyCharm은 내가 단원 테스트를 자동으로 실행할 수 있도록 허락하지만, 나는 이렇게 하지 않을 것이다. 왜냐하면 모든 사람이 PyCharm을 사용하는 것은 아니기 때문이다.대신 명령줄을 사용하여 응용 프로그램을 테스트합니다



cd tests
python3 -m unittest discover

The discover keyword tells unittest to find any files with the name of test_*.py and run the unittests inside them.


오류 성명을 받을 수 있습니다:



No module named pydash

우리는 setup.pypydash를 설치해서 이 문제를 해결할 수 있습니다



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 작업의 자동화

좋은 웹페이지 즐겨찾기