1 рдорд┐рдирдЯ рдореЗрдВ PyPI рдкрд░ рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреИрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ


рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ PyPI рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╛рдЗрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╖рдп рдкрд░ рдкрд╛рдП рдЧрдП рдкреЛрд╕реНрдЯ рдкрд░ рдареЛрдХрд░ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ , рдЬреЛ рди рдХреЗрд╡рд▓ 2014 рд╕реЗ, рдЖрдкрдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ (рдЖрдк) рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


2019 рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд┐рд░рджрд░реНрдж рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП? рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдпрд╣ рдкреНрд░рд╢реНрди рдкреВрдЫ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдПрдХ рдЯрди рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдмрдирд╛рдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╣реИред


1. PyPI ( рдкрдВрдЬреАрдХрд░рдг рд▓рд┐рдВрдХ ) рдкрд░ рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдБ


2. рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдмрдирд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдПрдВрдЯреНрд░реАрд╣реЛрдо рдлрд╝рд╛рдЗрд▓)


def main(): print("It's alive!") 

3. рдХрд╡рд┐рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


 curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python source $HOME/.poetry/env 

(рдЖрдк рдХрд╡рд┐рддрд╛ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдЗрдк рдЗрдВрд╕реНрдЯреЙрд▓ - рдСрд╕рд░ рдХрд╡рд┐рддрд╛ - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред)


4. рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдПрдБ


 cd myproject #    ,    poetry init 

5. рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ (рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА pyproject.toml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ)


 [tool.poetry.scripts] APPLICATION-NAME = 'entry:main' 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рдирд╛рдо   рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред


6. рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ! (рдЪрд░рдг 1 рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)


 poetry publish --username PYPI_USERNAME --password PYPI_PASS --build 

рд╣реЛ рдЧрдпрд╛! рдЕрдм рджреВрд╕рд░реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рджреЛ рдХрдорд╛рдВрдб рдЪрд╛рд╣рд┐рдП:


 $ sudo pip install PROJECT-NAME $ APPLICATION-NAME 

рдЬрд╣рд╛рдВ PROJECT-NAME рд╡рд╣ рдирд╛рдо рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 4 рдореЗрдВ рджрд┐рдпрд╛ рдерд╛, рдФрд░ APPLICATION-NAME рдЯреАрдо рдХрд╛ рдирд╛рдо рдЪрд░рдг 5 рд╕реЗ рд╣реИред




рд╕рдВрд╕реНрдХрд░рдг рдЕрджреНрдпрддрди


рдЬрдм рднреА рдЖрдк рдХрд┐рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдХреЛ pyproject.toml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓реЗрдВ :


 version = "0.1.0" 

рдФрд░ рдЪрд░рдг 6 рдХреЛ рджреЛрд╣рд░рд╛рдПрдВ:


 poetry publish --username PYPI_USERNAME --password PYPI_PASS --build 



рдмреЛрдирд╕: рдСрдЯреЛ-рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрд╡рд┐рд╕ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ


рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ .travis.yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ


 language: python dist: xenial before_install: - curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python - source $HOME/.poetry/env install: - poetry install script: - poetry build deploy: - provider: script skip_cleanup: true script: poetry publish --username $PYPI_USER --password $PYPI_PASS on: branch: master python: '3.7' tags: true 

рдФрд░ рдЯреНрд░реИрд╡рд┐рд╕-ci.com рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ PYPI_USER рдФрд░ PYPI_PASS рд╕реЗрдЯ рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдХреЗрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 git tag -a v1.2 # Replace version number with yours git push --tags 

Source: https://habr.com/ru/post/hi456304/


All Articles