Pythonã§èªåã ãã®ã¯ãœã©ã€ãã©ãªãäœãæ¹æ³
Pythonã§ã©ã€ãã©ãªãäœã
ãã®èšäºã¯ãPythonã®åºç€ãåãããpipã§ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããããšãããããã®ã¬ãã«ã®äººãæ³å®ããŠããŸããåå¿è åãã®èšäºã§ãã
åæç¥èãšããŠãPythonã®ã©ã€ãã©ãªã»ããã±ãŒãžã»ã¢ãžã¥ãŒã«ã»ã¯ã©ã¹ã»é¢æ°ã®å®çŸ©ãéãã«é¢ããŠã¯ã以äžèšäºããããåèã«ããŠãã ããã
ãã®èšäºã§ã¯ãPythonã§èªäœã©ã€ãã©ãªãäœããŸããpip install hogehogeã§ã€ã³ã¹ããŒã«ã§ããããã§ããã
åå¿è
ã®æ¹ïŒäœãé ããç§ãåå¿è
ã§ãïŒã ãšpip installã§ã€ã³ã¹ããŒã«ã§ããã©ã€ãã©ãªã£ãŠãGoogleãšãFacebookã®ãããªéžã°ãããšãªãŒãçµç¹ã ããäœãããã®ãšæã£ãŠããŸãããïŒç§ãã€ãæè¿ãŸã§ããæã£ãŠããŸãããå®ã¯ãããå人ã§ãç°¡åã«äœããŠããŸããŸãã
pip install hogehogeã§ãäžçäžã®èª°ã§ãã€ã³ã¹ããŒã«ã§ããã©ã€ãã©ãªãäœããŠããŸãã®ã§ããè奮ããŠããŸãããïŒè奮ããããªãã¯ç«æŽŸãªå€æ
Pythonistaã§ãããšããããã§ãèªäœã©ã€ãã©ãªãäœãæ
ã«åºãŸãããïŒ
ãã°ãç®æšã¯pip install unkoã§ã€ã³ã¹ããŒã«ã§ããã¯ãœã©ã€ãã©ãªãäœãããšã§ãã
äœ¿ãæ¹ã¯ã以äžã®ãããªæãã§ãã
>>> import unko
>>> unko.deru()
puripuri
ã¯ãµããã§ãããLet's Puripuri!
èªäœã©ã€ãã©ãªãäœãã¡ãªãã
äžå¿ããã§ãèªäœã©ã€ãã©ãªãäœãã¡ãªãããæ¹ããŠæžããŠãããŸãã
1ã€ã¯åœç¶ãå
çšæžããããã«äžçäžã®äººã«äœ¿ã£ãŠãããããšããç¹ã§ãããTensorFlow, Scikit-learnã®ãããªã©ã€ãã©ãªãšåãããã«ãäžçäžã®äººãèªåã®ã©ã€ãã©ãªãpipã§ã€ã³ã¹ããŒã«ã§ããã®ã§ããã¯ã¯ã¯ã¯ããŸãããã
ããäžã€ã¯ãã©ã€ãã©ãªåããŠãããšãã©ãããã§ã䜿ãããšãã§ããç¹ã§ããPythonã¯pipã§ã€ã³ã¹ããŒã«ããªããŠããhogehoge.pyãšãããã¡ã€ã«ãçŽæ¥æå®ããŠimportã§ããã®ã§ããããã¡ã€ã«ã®å Žæã«ãã£ãŠã¯å°å³ã«é¢åã ã£ããããŸããç¹ã«ãimportããããã¡ã€ã«ããäžã®éå±€ã«ããå Žåã§ããã
è§£æ±ºæ¹æ³ã¯ã調ã¹ãã°è²ã åºãŠããã®ã§ããããã£ãã©ã€ãã©ãªåãã¡ããã°pip installããããšã§ãã©ãã§ã䜿ããŠäŸ¿å©ã§ããïŒ
èªäœã©ã€ãã©ãªã®ãã¡ã€ã«æ§æ
ãã¡ã€ã«ã®æ§æã¯ä»¥äžã®ããã«ãªããŸãã
unko
âââ setup.py
âââ unko
âââ __init__.py
âââ unko.py
ã·ã³ãã«ãã€ã¯ãµããã§ããã
ã¡ã€ã³ãšãªãunko.pyã®äžèº«ãã¿ãŠã¿ãŸãã
def deru():
print('puripuri')
deru()ãšãã颿°ãåŒã¶ãšpuripuriãšè¡šç€ºãããŸããçç±ãšãæå³ã¯èããªãã§ãã ãããïŒç§ã«ãåãããŸããïŒã
setup.pyã®äžèº«ã¯ä»¥äžã§ããããã«ããpipã§ã€ã³ã¹ããŒã«ã§ããããã«ãªããŸãã
from setuptools import setup, find_packages
setup(
name='unko',
version='0.1',
packages=find_packages()
)
setup.pyã«ã¯ããã以å€ã«ãå¿
èŠãªïŒäŸåããïŒã©ã€ãã©ãªçãããããã®ãªãã·ã§ã³ãããã®ã§ãããä»åã¯å¿
èŠæå°éã«ããŠããŸãã
__init__.pyã¯ä»¥äžãšããŸãã
from unko.unko import *
å®ã¯ããã®ãã¡ã€ã«ã¯ãªããŠãè¯ãã®ã§ããããã®ãã¡ã€ã«ãç¡ããšã©ã€ãã©ãªã䜿ããšãimport unkoã§ãªãfrom unko import unkoãšããå¿
èŠããããã¹ããŒããããªããªãã®ã§ãã¡ã€ã«ãäœæããŠããŸãã
__init__.pyã«é¢ããŠã¯ã詳现ãã®èšäºã§ã¯è§ŠããŸããããæã£åãæ©ãã¯ä»¥äžèšäºåèã«ããŠã¿ãŠãã ããã
ããŒã«ã«ã§ã®èªäœã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«
éåžžã®ã€ã³ã¹ããŒã«
ããããèªäœã®ã¯ãœã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããŠã¿ãŸãããããŸãã¯ããŒã«ã«ç°å¢ã§ããunkoãã£ã¬ã¯ããªçŽäžïŒsetup.pyãšåãéå±€ïŒã§ã以äžã³ãã³ããå®è¡ããŸãã
$ pip install .
以äžã®ããã«è¡šç€ºããããã€ã³ã¹ããŒã«ã¯æåã§ãïŒç°å¢ã«ãã£ãŠå€å°è¡šç€ºã¯ç°ãªããããããŸããïŒã
Successfully built unko
Installing collected packages: unko
Successfully installed unko-0.1
éããæã§å®è¡ããŠã¿ãŸãããã
>>> import unko
>>> unko.deru()
puripuriãšåºãããèªåã ãã®ã¯ãœã©ã€ãã©ãªèªçã§ããããã§ãšãããããŸãïŒ
ã¢ã³ã€ã³ã¹ããŒã«ããå Žåã¯ä»¥äžã³ãã³ãã§ãã
$ pip uninstall unko
éçºïŒeditableïŒã¢ãŒãã§ã®ã€ã³ã¹ããŒã«
pip installã§èªäœã©ã€ãã©ãªãã€ã³ã¹ããŒã«ãããšããããŸã«ä»¥äžã®ããã«-eãªãã·ã§ã³ãã€ããŠããäŸãã¿ãããŸãã
$ pip install -e .
ããã¯editableã¢ãŒããšåŒã°ãããã®ã§ããäœãéãããšãããšãã©ã€ãã©ãªãæŽæ°ãããšããã¡ãã¡pip installãçŽããªããŠãããã®å
容ãå³åº§ã«åæ ãããŸãã
äŸãã°ãpip install -e .ãããåŸãunko.pyã以äžã®ããã«print('puripuri')ããprint('buriburi')ã«å€æŽããŸãã
def deru():
print('buriburi')
ãããšã以äžã³ãã³ãå®è¡ãããšburiburiãšè¡šç€ºãããŸãã
>>> import unko
>>> unko.deru()
倿Žã®ãã³ã«pip installããªããŠè¯ãã®ã§ãéçºäžã¯ãšãŠã䟿å©ã§ãããeditableã¢ãŒãã¯ãä»ã«ãæ®éã®pip installãšéããããã®ã§ãå
¬éããã©ã€ãã©ãªãã€ããéã«ã¯ãpip installã§åäœã確èªããŠãããGitHubçã«ã¢ããããŒãããæ¹ãè¯ãã§ãã
æåãsetup.pyã§packagesã®èšå®ãããŠããªããŠããã£ããããŸããã
èªäœã©ã€ãã©ãªãGitHubããã€ã³ã¹ããŒã«
ããã§ããŒã«ã«ã§ã¯ãœã©ã€ãã©ãªãã§ããŸããããããã ãšå€ã§æ¥ã«ã¯ãœã©ã€ãã©ãªãå¿ èŠã«ãªã£ããšãå°ã£ãŠããŸããŸããã
ãããªãšãã¯ãGitHubã®ãªããžããªã«ã¯ãœã©ã€ãã©ãªãã¢ããããŒãããŠãããŸããããå®éã«çšæãããªããžããªã以äžã§ãã
ãã¡ã€ã«æ§æã¯ãå çšã®ãã®ãšå šãåãã§ããã¯ãµããã§ããã
pipã¯ãå®ã¯pip install git+<ãªããžããªã®URL>ã§GitHubäžã®ãªããžããªã®ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ã§ããŸãã
ãªã®ã§ã以äžã³ãã³ãå®è¡ããã°ããããã«ç¹ãã£ãŠããã°èª°ã§ãã©ãã§ãã¯ãœã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããããšãã§ããŸãã
$ pip install git+https://github.com/karaage0703/unko
PyPIã«ç»é²
ãããŸã§ããã°ç®æšã®pip install unkoã§ã€ã³ã¹ããŒã«ã§ããã¯ãœã©ã€ãã©ãªãäžçäžã«å
¬éãããŸã§ããšäžæ©ã§ãã
pip install <package name>ã§ã€ã³ã¹ããŒã«ã§ããããã«ããã«ã¯ãPyPI(Python Package Index)ã«ç»é²ããå¿
èŠããããŸãããã ãç§ã¯PyPIã§ã¯ãœã©ã€ãã©ãªãå
¬éã¯ã§ããŸããã§ããïŒè¿·æããããããªã®ã§âŠïŒ
以äžèšäºãåèã«ç»é²ããã°PyPIã«ç»é²ã§ããŸãã âŠã¯ãã§ãããã€ãããã£ãšåœ¹ã«ç«ã€ã©ã€ãã©ãªãäœã£ãŠç»é²ããŸãã
PyPIãžã®äœæ¥ã¯ãå°ãæéãªã®ã§èªååã§ãããšäŸ¿å©ã§ããã以äžã¯GitHub Actionsã䜿çšããäŸã§ãã
èªååãŸã§ã¯äžèŠãªäººã¯ã以äžã®ãããªã¹ã¯ãªãããã€ãããšäŸ¿å©ãããããŸãããã
远èšïŒAPIããŒã¯ã³ãå¿
èŠã«ãªã£ãŠããã¯~/pypircã«ä»¥äžã®ããã«èšèŒããå¿
èŠãããããã§ãã
[pypi]
username = __token__
password = <API>
setup.pyãpyproject.tomlã«çœ®ãæã
æè¿ã¯setup.pyã§ãªãpyproject.tomlã䜿ãã®ãä»é¢šãããã§ãã以äžèšäºåç
§ãã ãããä»ããäœããªãpyproject.tomlçã®æ¹ãè¯ããããããŸããããã pyproject.tomlã ãã ãšpip install -e .ãã§ããªãããšã«ã¯æ³šæããŸãããã
GitHubã®äŸã¯ä»¥äžã§ãã
ãŸãšã
Pythonã§èªäœã¯ãœã©ã€ãã©ãªãã€ããæ¹æ³ããŸãšããŠã¿ãŸãããæã£ãããPythonã®ã©ã€ãã©ãªæè»œã«äœããŠäŸ¿å©ã§ããã
å°ã倧ãããªãããžã§ã¯ãã®éçºã§Pythonã䜿ã£ãŠãããšãã¯ãã©ã€ãã©ãªãå€ã«å ¬éããªããŠããeditableã¢ãŒããªã©äœ¿ããšæ¥œã«ãªãã±ãŒã¹ããããããããŸãããã
ããšã¯ãPyPIã«ç»é²ãŸã§ã¯ããªããŠãããã䜿ãå人çãªã©ã€ãã©ãªã¯ãGitHubã«ã¢ããããŠã€ã³ã¹ããŒã«ã§ããããã«ããŠãããšäŸ¿å©ãããããŸãããã
é¢é£èšäº
åèãªã³ã¯
åèãªããžããª
倿Žå±¥æŽ
- 2023/08/04
setup.pyã®pyproject.tomlãžã®çœ®ãæãã«é¢ããŠè¿œèš - 2023/05/02 åèãªã³ã¯ã»ãªããžããªè¿œå
Discussion