äžçã¯ããå€ãã®Pythonã³ãŒããæ±ããŠããã
Python 3 ã«ã¯ Distutils
ãšåŒã°ããããã±ãŒãžã³ã°çšã®ãã¬ãŒã ã¯ãŒã¯ãä»å±ããŠããã
ãã® Distutils
ã¯ããããã®ãã®ãã€ãŸã£ãã©ã€ãã©ãª
ãªã©ãªã©ã
ããã«ãDistutils
ã¯ããªãŒãã³ãœãŒã¹ã®Pythonã©ã€ãã©ãªã®ããã®äžå€®ãªããžããªã§ãã Python Package Index (âPyPIâ) ã«çµ±åãããŠããã
ãã®ãã㪠Distutils
ã®æ§ã
ãªé¢ã®äžæ žã«ããã®ã
ãã»ããã¢ããã¹ã¯ãªãããïŒãã®ã¹ã¯ãªããã¯äŒçµ±çã«setup.pyãšåŒã°ããŠããïŒã
chardetã®setup.py
from distutils.core import setup
setup(
name = "chardet",
packages = ["chardet"],
version = "1.0.2",
description = "Universal encoding detector",
author = "Mark Pilgrim",
author_email = "mark@diveintomark.org",
url = "http://chardet.feedparser.org/",
download_url = "http://chardet.feedparser.org/download/python3-chardet-1.0.1.tgz",
keywords = ["encoding", "i18n", "xml"],
classifiers = [
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Development Status :: 4 - Beta",
"Environment :: Other Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)",
"Operating System :: OS Independent",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Text Processing :: Linguistic",
],
long_description = """\
Universal character encoding detector
-------------------------------------
Detects
- ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
- Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
- EUC-JP, SHIFT_JIS, ISO-2022-JP (Japanese)
- EUC-KR, ISO-2022-KR (Korean)
- KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
- ISO-8859-2, windows-1250 (Hungarian)
- ISO-8859-5, windows-1251 (Bulgarian)
- windows-1252 (English)
- ISO-8859-7, windows-1253 (Greek)
- ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
- TIS-620 (Thai)
This version requires Python 3 or later; a Python 2 version is available separately.
"""
)
chardet
ãš httplib2
ã¯ãªãŒãã³ãœãŒã¹ã ãã
Pythonã©ã€ãã©ãªãäœãç¹å®ã®ã©ã€ã»ã³ã¹ã§ãªãªãŒã¹ããªããã°ãªããªããšããå¶çŽã¯ååšããªãã
ãã®ç« ã§èª¬æããæé ã¯ãã©ã€ã»ã³ã¹ã«é¢ä¿ãªããã©ããªPythonã®ãœãããŠã§ã¢ã«ã䜿ããã
åããŠã®Pythonããã±ãŒãžããªãªãŒã¹ããäœæ¥ã¯æããããã®ã Distutils ã¯ã§ããéãã®èªååã詊ã¿ãŠãããããèªåèªèº«ã§ãããªããã°ãããªãããšãããã€ãååšããã
ããã¯ãæ¿æ²»ãšå±éºã«æºã¡ãè€éãªè©±é¡ã ãèªåã®ãœãããŠã§ã¢ããªãŒãã³ãœãŒã¹ãšããŠãªãªãŒã¹ãããã®ã§ããã°ãç§ã¯ã€ã€ãŸãã5ã€ã®ã¢ããã€ã¹ãããŠããïŒ
1. ç¬èªã®ã©ã€ã»ã³ã¹ãæžããŠã¯ãªããªãã
2. ç¬èªã®ã©ã€ã»ã³ã¹ãæžããŠã¯ãªããªãã
3. ç¬èªã®ã©ã€ã»ã³ã¹ãæžããŠã¯ãªããªãã
4. ã©ã€ã»ã³ã¹ãgplã§ããå¿
èŠã¯ãªãããgpläºæã§ããå¿
èŠãããã
5. ç¬èªã®ã©ã€ã»ã³ã¹ãæžããŠã¯ãªããªãã
ãã®åé¡ã«ã¯PyPIã®åé¡ã·ã¹ãã ã䜿ããããã®è©³çްã«ã€ããŠã¯ãã®ç« ã®ããå°ãåŸã§èª¬æããã
ãããããå æžã«æžãŸããŠã¯ãªããªããæäœã§ãããœãããŠã§ã¢ãäœãããã®ãã«ã€ããŠã®æŠèŠãšãã€ã³ã¹ããŒã«ã®æ¹æ³ãããã¯æžãããã«ãããã
PythonãœãããŠã§ã¢ã®ããã±ãŒãžåãå§ããã«ã¯ããã¡ã€ã«ãšãã£ã¬ã¯ããªãæŽçããå¿
èŠãããã
httplib2
ãã£ã¬ã¯ããªã¯ä»¥äžã®ããã«ãªãïŒ
httplib2/ 1
|
+--README.txt 2
|
+--setup.py 3
|
+--httplib2/ 4
|
+--__init__.py
|
+--iri2uri.py
ããã«ã¯Pythonã¢ãžã¥ãŒã«ãšåãååãä»ããŠããã
ããªããLinuxãMac OS Xã䜿ã£ãŠãããšããŠãããã®ã¯ãŒã«ãªããã¹ããšãã£ã¿ã«ã¯ããŸãééããªããã¡ã€ã«ãWindowsã¹ã¿ã€ã«ã®æ¹è¡æåã§ä¿åãããªãã·ã§ã³ãããã
setup.pyãšããååãä»ããŠããã¹ãã
ãã®ãã¡ã€ã«ã¯âread meâãã¡ã€ã«ãã»ããã¢ããã¹ã¯ãªãããšäžç·ã«ã«ãŒããã£ã¬ã¯ããªã«çœ®ããŠããã°ããã
ããããhttplib2ã¯åäžã®.pyãã¡ã€ã«ã§ã¯ãªããhttplib2ã¯ãã«ããã¡ã€ã«ã¢ãžã¥ãŒã«ãªã®ã ããããããã§ãåé¡ã¯ãªãïŒ
ã«ãŒããã£ã¬ã¯ããªã®äžã«httplib2ãã£ã¬ã¯ããªã眮ããã
ã€ãŸããhttplib2/ãšããã«ãŒããã£ã¬ã¯ããªã®äžã«ããhttplib2/ãã£ã¬ã¯ããªã®äžã« __init__.py
ãã¡ã€ã«ãããããšã«ãªããããã§åé¡ãªããå®ã¯ãããã«ãã£ãŠããã±ãŒãžåã®åŠçãåçŽåãããã
chardetãã£ã¬ã¯ããªã®æ¹ã¯ãããšã¯åŸ®åŠã«ç°ãªã£ãŠããã httplib2ãšåããchardetã¯ãã«ããã¡ã€ã«ã¢ãžã¥ãŒã«ãªã®ã§ã chardet/ãšããã«ãŒããã£ã¬ã¯ããªã®äžã«chardet/ãã£ã¬ã¯ããªãååšããã ããããchardetã®å Žåã¯ã README.txtãã¡ã€ã«ã«å ããŠhtml圢åŒã®ããã¥ã¡ã³ããdocs/ãã£ã¬ã¯ããªã®äžã«çšæãããŠããã®ã ããã®docs/ãã£ã¬ã¯ããªã«ã¯ã.htmlãã¡ã€ã«ã.cssãã¡ã€ã«ãããã€ãå ¥ã£ãŠãããããã«images/ãšãããµããã£ã¬ã¯ããªã®äžã«ã¯è€æ°ã®.pngãã¡ã€ã«ã.gifãã¡ã€ã«ãå ¥ã£ãŠããïŒããã¯åŸã§éèŠã«ãªãïŒã
ãŸãã(l)gplã§ã©ã€ã»ã³ã¹ããããœãããŠã§ã¢ã®æ £äŸãšããŠãlgplã®å šæãåããCOPYING.txtãšãããã¡ã€ã«ãå ¥ã£ãŠããã
chardet/
|
+--COPYING.txt
|
+--setup.py
|
+--README.txt
|
+--docs/
| |
| +--index.html
| |
| +--usage.html
| |
| +--images/ ...
|
+--chardet/
|
+--__init__.py
|
+--big5freq.py
|
+--...
Distutilsã®ã»ããã¢ããã¹ã¯ãªããã¯Pythonã¹ã¯ãªããã«ãªãã ãã®ã¹ã¯ãªããã¯çè«çã«ã¯Pythonãã§ããããšãªãäœã§ãã§ããã ãããå®éã«ã¯ããã®ã¹ã¯ãªããã§ã¯æå°éã®åŠçãå¯èœãªéãæšæºçãªæ¹æ³ã§è¡ãã¹ãã
ã€ã³ã¹ããŒã«åŠçããšããŸããã¯ãªãã®ã«ããã°ã ãšããŸããã¯ãªãã°ã¬ããŒããè¿ã£ãŠããããšã«ãªãã
ã©ããªDistutilsã»ããã¢ããã¹ã¯ãªããã ãããšã1è¡ç®ã¯åžžã«åããã®ã«ãªãïŒ
from distutils.core import setup
ãã㯠setup()
颿°ãã€ã³ããŒãããŠããã
ãã®é¢æ°ãDistutilsã®ã¡ã€ã³ã®ãšã³ããªãã€ã³ãã
ãã¹ãŠã®Distutilsã»ããã¢ããã¹ã¯ãªããã®ãã¡ã®95%ã¯setup()ã®åŒã³åºãã ãã§æ§æãããŠãããä»ã«ã¯äœãå«ãã§ããªãïŒãã®çµ±èšã¯åãªãã§ã£ã¡äžãã ããDistutilsã®ã»ããã¢ããã¹ã¯ãªããããDistutilsã®setup()颿°ãåŒã³åºã以äžã®ããšãããã®ã§ããã°ãäœãããçžå¿ã®çç±ãæã£ãŠããã¹ã.
setup()颿°ã¯äœåãã®ãã©ã¡ãŒã¿ãåãåãããšãã§ãããããã«é¢ãããã¹ãŠã®äººãæ£æ°ã«ä¿ã€ããã«ããã¹ãŠã®ãã©ã¡ãŒã¿ã«ã¯ååä»ãåŒæ°ã䜿ããªããã°ãªããªããããã¯åãªãæ £äŸã§ã¯ãªããã³ãŒãäžèŠæ±ãããŠããæ¡ä»¶ã ãåŸã£ãŠãååä»ãåŒæ°ã䜿ããã«setup()颿°ãåŒã³åºãããšãããšãã»ããã¢ããã¹ã¯ãªããã¯ã¯ã©ãã·ã¥ããã
次ã®ååä»ãåŒæ°ã¯å¿ é ïŒ
ãããžã§ã¯ãçšã®ãŠã§ããµã€ããå¥åã«æã£ãŠããªãã®ã§ããã°ãèªåã®PyPIããã±ãŒãžã®ããŒãžã§ãããã
å¿ é ã§ã¯ãªããã以äžãã»ããã¢ããã¹ã¯ãªããã«å«ããŠããããšãæšå¥šïŒ
ã»ããã¢ããã¹ã¯ãªããã®ã¡ã¿ããŒã¿ã¯ pep 314 ã§å®çŸ©ãããŠããã
ã§ã¯ãchardetã®ã»ããã¢ããã¹ã¯ãªãããèŠãŠã¿ããã
ããã§ã¯å
ã»ã©èª¬æããå¿
é /æšå¥šã®ãã©ã¡ãŒã¿ãŒå
šéšã«å ããŠã
ããã«ããäžã€ãpackages
ãšãããã©ã¡ãŒã¿ã䜿ã£ãŠããã
from distutils.core import setup
setup(
name = 'chardet',
packages = ['chardet'],
version = '1.0.2',
description = 'Universal encoding detector',
author='Mark Pilgrim',
...
)
packagesãã©ã¡ãŒã¿ã¯ãé åžããã»ã¹ã«ãããçšèªã®äžå¹žãªéè€ãæµ®ã圫ãã«ããã ç§ãã¡ã¯ãããŸæ§ç¯ããŠãããã®ããããã±ãŒãžããšåŒãã§ããïŒãããŠããããPythonã®ãããã±ãŒãžãã€ã³ããã¯ã¹ã«ç»é²ãããïŒã
ãããããã®packagesãã©ã¡ãŒã¿ãæããŠãããã®ã¯ãããšã¯éããããã¯ãchardetã¢ãžã¥ãŒã«ããã«ããã¡ã€ã«ã¢ãžã¥ãŒã«ïŒããã¯æã«âŠâŠãããã±ãŒãžããšåŒã°ããïŒã§ãããšããäºå®ãæããŠããã
ãã®packagesãã©ã¡ãŒã¿ã¯ã
chardet/ãã£ã¬ã¯ããªã__init__.py
ãã¡ã€ã«ã
ãããŠchardetã¢ãžã¥ãŒã«ãæ§æãããã¹ãŠã®.pyãã¡ã€ã«ããã«ãã«å ããããã«
Distutils
ã«äŒããã
ããã¯éèŠã
ããå®éã®ãœãŒã¹ã³ãŒããå
¥ãå¿ããŠããŸã£ããã
ããã¥ã¡ã³ããã¡ã¿ããŒã¿ã®è©±ã¯ãã¹ãŠç¡æå³ãªãã®ã«ãªã£ãŠããŸãã
Python Package Index (âPyPIâ) ã«ã¯äœåãã®Pythonã©ã€ãã©ãªãååšããŠããã é©åãªåé¡çšã¡ã¿ããŒã¿ãçšæããŠããã°ãä»ã®äººã ãããªãã®ã©ã€ãã©ãªãç°¡åã«èŠã€ããããããã«ãªãã
PyPIã¯ãåé¡ã¿ã°ãããšã«ããã±ãŒãžãæ¢ããããã«ãªã£ãŠããŠã åé¡ã¿ã°ãããã€ãéžãã§çµã蟌ã¿ããããããšãã§ããã åé¡ã¿ã°ã¯ç¡èŠã§ãããããªèŠããªãã¡ã¿ããŒã¿ã§ã¯ãªãã
ãœãããŠã§ã¢ãåé¡ããã«ã¯ã
classifiers
ãã©ã¡ãŒã¿ã Distutils
ã® setup()
颿°ã«æž¡ãã°ããã
classifiers
ã¯ãæååã®ãªã¹ãã ãããã®æååã¯èªç±åœ¢åŒã§ã¯ãªãã
ãã¹ãŠã®åé¡ã¿ã°ã¯PyPIã®ãã®ãªã¹ãã«ãããã®ã䜿ãå¿
èŠãããã
åé¡ã¿ã°ã¯ãªãã·ã§ã³ãªã®ã§ãDistutilsã®ã»ããã¢ããã¹ã¯ãªãããæžãæã«ã¯å šãŠçç¥ããããšãã§ããã ãããããããã£ãŠã¯ãããªããå°ãªããšã次ã®åé¡ã¿ã°ã¯å¿ ãå ¥ããŠããã¹ãã
å ·äœçã«ã¯ã - "Programming Language :: Python"ãš - "Programming Language :: Python :: 3"
ã®äž¡æ¹ãå ¥ããŠããã¹ãã ãã®2ã€ã®ã¿ã°ãæãããšãããã±ãŒãžã¯pypi.python.orgã®å šããŒãžã®ãµã€ãããŒãããªã³ã¯ãããŠãããã® Python 3 äºæã©ã€ãã©ãªã®ãªã¹ãã«è¡šç€ºãããªããªã£ãŠããŸãã
ããã¯ããµãŒãããŒãã£ã®ã©ã€ãã©ãªãè©äŸ¡ãããšãã«ã«æ¢ãããã è€æ°ã®ã©ã€ã»ã³ã¹ã®äžã§é åžããŠããã©ã€ãã©ãªã ãšã¯ã£ãã瀺ããŠããã®ã§ãªããã°ãè€æ°ã®ã©ã€ã»ã³ã¹ã¿ã°ãå ¥ããŠã¯ãããªãïŒãããŠã匷å¶ãããŠããå Žåã§ãªããã°ããœãããŠã§ã¢ãè€æ°ã®ã©ã€ã»ã³ã¹ã§å ¬éããªãã¹ãã ãŸããä»ã®äººã«è€æ°ã©ã€ã»ã³ã¹ã匷å¶ããã®ããããã¹ããïŒ
ãããœãããŠã§ã¢ãWindowsïŒãããã¯Mac OS XãLinuxïŒäžã§ã®ã¿åããã®ãªããåŸã«ãªã£ãŠãããç¥ããããæ©ãã«ç¥ã£ãŠããããã ãœãããŠã§ã¢ããã©ãããã©ãŒã äŸåã®ã³ãŒãã䜿ããã«ã©ãã§ãåäœããã®ã§ããã°ã"Operating System :: OS Independent"ãšããåé¡ã¿ã°ã䜿ãã è€æ°ã®Oparating Systemåé¡ã¿ã°ãæžããªããã°ãªããªãã®ã¯ã ãœãããŠã§ã¢ãåã ã®ãã©ãããã©ãŒã ã«ã€ããŠç¹å¥ãªãµããŒããå¿ èŠãšãããšãã ãïŒããã¯äžè¬çã§ã¯ãªãïŒã
以äžã®åé¡ã¿ã°ãå«ããŠããããšã奚ããïŒ
Development StatusïŒéçºç¶æ³ïŒ: ãœãããŠã§ã¢ã¯ããŒã¿çã®å質ã ãããïŒ ãããšãã¢ã«ãã¡çã®åè³ªïŒ ããªã¢ã«ãã¡ïŒ äžã€ã ãéžãŒãããããæ£çŽã«ã
Intended AudienceïŒå¯Ÿè±¡ãšããå©çšè ïŒ: ã©ããªäººããœãããŠã§ã¢ãããŠã³ããŒãããã ãããïŒ æãäžè¬çãªéžæè¢ãšããŠã¯
ãããã
FrameworkïŒãã¬ãŒã ã¯ãŒã¯ïŒ: ãããœãããŠã§ã¢ããDjangoãZopeãªã©ã®ãã£ãšå€§ããªãã¬ãŒã ã¯ãŒã¯ã®ããã®ãã©ã°ã€ã³ã§ããå Žåã¯ãé©åœãªFrameworkã¿ã°ãä»ããŠããããããã§ãªãã®ãªãããã¯çç¥ããã
TopicïŒãããã¯ïŒ: ããããã®éžæè¢ãååšããã該åœãããã®ããã¹ãŠéžæãããã
äŸãæããããã«ãããã« Django ã®åé¡ã¿ã°ã瀺ãã
Django ã¯ã補åã¬ãã«ã®å質ãæã¡ãã¯ã©ã¹ãã©ãããã©ãŒã ã§ãWebãµãŒãäžã§åäœãããbsdã©ã€ã»ã³ã¹ã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã ïŒDjangoã¯ãŸã Python 3ã«å¯Ÿå¿ããŠããªãã®ã§ãProgramming Language :: Python :: 3ãšããã¿ã°ã¯å«ãŸããŠããªãïŒã
Programming Language :: Python
License :: OSI Approved :: BSD License
Operating System :: OS Independent
Development Status :: 5 - Production/Stable
Environment :: Web Environment
Framework :: Django
Intended Audience :: Developers
Topic :: Internet :: WWW/HTTP
Topic :: Internet :: WWW/HTTP :: Dynamic Content
Topic :: Internet :: WWW/HTTP :: WSGI
Topic :: Software Development :: Libraries :: Python Modules
次ã¯chardetã®åé¡ã¿ã°ã
chardetã¯ã æåã³ãŒãèªåå€å®çšã®ã©ã€ãã©ãªã ã ããã¯
ãæ³å®ããŠããã
Programming Language :: Python
Programming Language :: Python :: 3
License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Operating System :: OS Independent
Development Status :: 4 - Beta
Environment :: Other Environment
Intended Audience :: Developers
Topic :: Text Processing :: Linguistic
Topic :: Software Development :: Libraries :: Python Modules
次㯠httplib2
ã®åé¡ã¿ã°ã
ããã¯ãhttpãŠã§ããµãŒãã¹ã§è©³ããèŠãã©ã€ãã©ãªã ã
httplib2
ã¯
ãšããŠããã
Programming Language :: Python
Programming Language :: Python :: 3
License :: OSI Approved :: MIT License
Operating System :: OS Independent
Development Status :: 4 - Beta
Environment :: Web Environment
Intended Audience :: Developers
Topic :: Internet :: WWW/HTTP
Topic :: Software Development :: Libraries :: Python Modules
ããã©ã«ãã§ã¯ãDistutils
ã¯æ¬¡ã®ãã¡ã€ã«ããªãªãŒã¹ããã±ãŒãžã«å
¥ããïŒ
ããã§httplib2ãããžã§ã¯ãã®ãã¡ã€ã«ã¯ç¶²çŸ ã§ããŠããã
ããã chardet
ãããžã§ã¯ãã§ã¯ã
ããã«å ã㊠COPYING.txt
ã©ã€ã»ã³ã¹ãã¡ã€ã«ãšã
ç»åãhtmlãã¡ã€ã«ãåããdocs/ãã£ã¬ã¯ããªãããã±ãŒãžã«å
¥ããŠããã€ããã ã£ãã
ãã®ãã¡ã€ã«ããã£ã¬ã¯ããªãchardetã®ãªãªãŒã¹ããã±ãŒãžã«è¿œå ããŠãããã«ã¯ã
ãããã§ã¹ããã¡ã€ã« ãå¿
èŠãšãªãã
ãããã§ã¹ããã¡ã€ã«ã¯ MANIFEST.in
ãšããåã®ããã¹ããã¡ã€ã«ã
ãã®ãã¡ã€ã«ãREADME.txtãsetup.pyãã¡ã€ã«ãšäžç·ã«ã«ãŒããã£ã¬ã¯ããªã«çœ®ãã
ãããã§ã¹ããã¡ã€ã«ã¯ãPythonã¹ã¯ãªããã§ã¯ãªãã
Distutils
ãå®çŸ©ããäžé£ã®ãã³ãã³ããã䞊ã¹ãããã¹ããã¡ã€ã«ã
ãããã§ã¹ãã³ãã³ãã䜿ãããšã§ãç¹å®ã®ãã¡ã€ã«ããã£ã¬ã¯ããªãããã±ãŒãžã«å«ãããé€å€ãããã§ããã
chardetãããžã§ã¯ãçšã®ãããã§ã¹ããã¡ã€ã«å šäœïŒ
include COPYING.txt 1
recursive-include docs *.html *.css *.png *.gif 2
recursive-include
ã¯ãã£ã¬ã¯ããªåãš1ã€ä»¥äžã®ãã¡ã€ã«åãåãåãã
ãã®ãã¡ã€ã«åã®éšåã§ã¯ãã¡ã€ã«ãåå¥ã«æå®ããã ãã§ã¯ãªããã¯ã€ã«ãã«ãŒãã䜿ã£ãŠæå®ããããšãã§ããã
ãã®è¡ã¯ãã«ãŒããã£ã¬ã¯ããªã®äžã«docs/ãã£ã¬ã¯ããªãããã ããïŒ
ãã®äžãã .htmlã».cssã».pngã».gif
ãã¡ã€ã«ãïŒååž°çã«ïŒæ¢ããŠã»ããã
ãããããã¹ãŠãªãªãŒã¹ããã±ãŒãžã«å
¥ãããããšããæå³ã«ãªãã
ãã¹ãŠã®ãããã§ã¹ãã³ãã³ãã¯ã ãããžã§ã¯ããã£ã¬ã¯ããªã®ãã£ã¬ã¯ããªæ§é ããã®ãŸãŸç¶æããã
recursive-include
ã³ãã³ããã.html
ãš .png
ãã¡ã€ã«ããªãªãŒã¹ããã±ãŒãžã®ã«ãŒããã£ã¬ã¯ããªã«çœ®ãããšã¯ãªãã
ãã®ã³ãã³ãã¯docs/ãã£ã¬ã¯ããªã®æ§é ãä¿ã¡ã€ã€ããã®ãã£ã¬ã¯ããªã®äžã«ãããã¡ã€ã«ã®ãã¡ã¯ã€ã«ãã«ãŒãã«ããããããã®ã ããããã±ãŒãžã«å«ããïŒä»ãŸã§èšã£ãŠããªãã£ãããchardetã®ããã¥ã¡ã³ãã¯ã
å®éã«ã¯xmlã§æžãããŠããã
å¥ã®ã¹ã¯ãªããã«ãã£ãŠhtmlã«å€æãããŠããã
ç§ã¯ãã®xmlãã¡ã€ã«ããªãªãŒã¹ããã±ãŒãžã«å«ããã«ãhtmlãšç»åã ããå«ããŠããããïŒã
ãããã§ã¹ããã¡ã€ã«ãå¿
èŠã«ãªãã®ã¯ãDistutils
ãããã©ã«ãã§ã¯ç¡èŠãããã¡ã€ã«ãããã±ãŒãžã«å
¥ããå Žåã ãã
ãããã§ã¹ããã¡ã€ã«ãæ¬åœã«å¿
èŠãªããDistutils
ãããã©ã«ãã§èŠã€ããªããã¡ã€ã«ããã£ã¬ã¯ããªã ããæžãããã«ããã
ææ¡ããŠãããªããã°ãããªãããšã¯ããããããã
Distutils
ã«ã¯ãå¿
é ãªã¡ã¿ããŒã¿ãã»ããã¢ããã¹ã¯ãªããäžã«ãã¹ãŠååšããŠãããã©ããããã§ãã¯ããããã®çµã¿èŸŒã¿ã®æ€èšŒã³ãã³ããä»å±ããŠããã
äŸãã°ãversion
ãã©ã¡ãŒã¿ãå
¥ãå¿ãããšããããDistutils
ãããããšã©ãŒãšããŠè¡šç€ºããŠãããã
äŸïŒ
c:\python31\python.exe setup.py check
running check
warning: check: missing required meta-data: version
versionãã©ã¡ãŒã¿ïŒãšãã®ä»ã®å¿ èŠãªã¡ã¿ããŒã¿å šãŠïŒãå ¥ãããšãcheckã³ãã³ãã¯ãã®ããã«ãªãïŒ
c:\Users\pilgrim\chardet> c:\python31\python.exe setup.py check
running check
Distutilsã¯ãè€æ°ã®çš®é¡ã®ãªãªãŒã¹ããã±ãŒãžãæ§ç¯ã§ããã
æäœã§ãããœãŒã¹ã³ãŒããšã
Disturils
ã®ã»ããã¢ããã¹ã¯ãªãããšã
âread meâãã¡ã€ã«ãšããã®ä»ä»»æã®è¿œå ãã¡ã€ã«ãå
¥ããããœãŒã¹ãã£ã¹ããªãã¥ãŒã·ã§ã³ããæ§ç¯ãã¹ãã
ãœãŒã¹ãã£ã¹ããªãã¥ãŒã·ã§ã³ãæ§ç¯ããã«ã¯ãDistutils
ã®ã»ããã¢ããã¹ã¯ãªããã«
sdist
ã³ãã³ããæž¡ãã°ããã
c:\Users\pilgrim\chardet> c:\python31\python.exe setup.py sdist
running sdist
running check
reading manifest template 'MANIFEST.in'
writing manifest file 'MANIFEST'
creating chardet-1.0.2
creating chardet-1.0.2\chardet
creating chardet-1.0.2\docs
creating chardet-1.0.2\docs\images
copying files to chardet-1.0.2...
copying COPYING -> chardet-1.0.2
copying README.txt -> chardet-1.0.2
copying setup.py -> chardet-1.0.2
copying chardet\__init__.py -> chardet-1.0.2\chardet
copying chardet\big5freq.py -> chardet-1.0.2\chardet
...
copying chardet\universaldetector.py -> chardet-1.0.2\chardet
copying chardet\utf8prober.py -> chardet-1.0.2\chardet
copying docs\faq.html -> chardet-1.0.2\docs
copying docs\history.html -> chardet-1.0.2\docs
copying docs\how-it-works.html -> chardet-1.0.2\docs
copying docs\index.html -> chardet-1.0.2\docs
copying docs\license.html -> chardet-1.0.2\docs
copying docs\supported-encodings.html -> chardet-1.0.2\docs
copying docs\usage.html -> chardet-1.0.2\docs
copying docs\images\caution.png -> chardet-1.0.2\docs\images
copying docs\images\important.png -> chardet-1.0.2\docs\images
copying docs\images\note.png -> chardet-1.0.2\docs\images
copying docs\images\permalink.gif -> chardet-1.0.2\docs\images
copying docs\images\tip.png -> chardet-1.0.2\docs\images
copying docs\images\warning.png -> chardet-1.0.2\docs\images
creating dist
creating 'dist\chardet-1.0.2.zip' and adding 'chardet-1.0.2' to it
adding 'chardet-1.0.2\COPYING'
adding 'chardet-1.0.2\PKG-INFO'
adding 'chardet-1.0.2\README.txt'
adding 'chardet-1.0.2\setup.py'
adding 'chardet-1.0.2\chardet\big5freq.py'
adding 'chardet-1.0.2\chardet\big5prober.py'
...
adding 'chardet-1.0.2\chardet\universaldetector.py'
adding 'chardet-1.0.2\chardet\utf8prober.py'
adding 'chardet-1.0.2\chardet\__init__.py'
adding 'chardet-1.0.2\docs\faq.html'
adding 'chardet-1.0.2\docs\history.html'
adding 'chardet-1.0.2\docs\how-it-works.html'
adding 'chardet-1.0.2\docs\index.html'
adding 'chardet-1.0.2\docs\license.html'
adding 'chardet-1.0.2\docs\supported-encodings.html'
adding 'chardet-1.0.2\docs\usage.html'
adding 'chardet-1.0.2\docs\images\caution.png'
adding 'chardet-1.0.2\docs\images\important.png'
adding 'chardet-1.0.2\docs\images\note.png'
adding 'chardet-1.0.2\docs\images\permalink.gif'
adding 'chardet-1.0.2\docs\images\tip.png'
adding 'chardet-1.0.2\docs\images\warning.png'
removing 'chardet-1.0.2' (and everything under it)
ææããŠããããããšãããã€ãããïŒ
dist/
ãšãããã£ã¬ã¯ããªãäœæããããšãåãããdist/ãã£ã¬ã¯ããªã®äžã«ã¯é
åžå¯èœãª .zip
ãã¡ã€ã«ããããc:\Users\pilgrim\chardet> dir dist
Volume in drive C has no label.
Volume Serial Number is DED5-B4F8
Directory of c:\Users\pilgrim\chardet\dist
07/30/2009 06:29 PM <DIR> .
07/30/2009 06:29 PM <DIR> ..
07/30/2009 06:29 PM 206,440 chardet-1.0.2.zip
1 File(s) 206,440 bytes
2 Dir(s) 61,424,635,904 bytes free
ã©ããªPythonã©ã€ãã©ãªã«ãWindowsãŠãŒã¶ã®ããã®ã°ã©ãã£ã«ã«ã€ã³ã¹ããŒã©ãä»ãã䟡å€ãããããã®ã€ã³ã¹ããŒã©ã¯ïŒWindowsã䜿ã£ãŠãªã人ã§ãïŒç°¡åã«äœãããšãã§ãããã WindowsãŠãŒã¶ã¯ããããããããæãã
Distutilsã䜿ãã°ãã°ã©ãã£ã«ã«ãªWindowsã€ã³ã¹ããŒã©ãäœæã§ããããã®æ©èœã䜿ãã«ã¯bdist_wininst
ã³ãã³ãã Distutils
ã®ã»ããã¢ããã¹ã¯ãªããã«æž¡ãã°ããã
c:\Users\pilgrim\chardet> c:\python31\python.exe setup.py bdist_wininst
running bdist_wininst
running build
running build_py
creating build
creating build\lib
creating build\lib\chardet
copying chardet\big5freq.py -> build\lib\chardet
copying chardet\big5prober.py -> build\lib\chardet
...
copying chardet\universaldetector.py -> build\lib\chardet
copying chardet\utf8prober.py -> build\lib\chardet
copying chardet\__init__.py -> build\lib\chardet
installing to build\bdist.win32\wininst
running install_lib
creating build\bdist.win32
creating build\bdist.win32\wininst
creating build\bdist.win32\wininst\PURELIB
creating build\bdist.win32\wininst\PURELIB\chardet
copying build\lib\chardet\big5freq.py -> build\bdist.win32\wininst\PURELIB\chardet
copying build\lib\chardet\big5prober.py -> build\bdist.win32\wininst\PURELIB\chardet
...
copying build\lib\chardet\universaldetector.py -> build\bdist.win32\wininst\PURELIB\chardet
copying build\lib\chardet\utf8prober.py -> build\bdist.win32\wininst\PURELIB\chardet
copying build\lib\chardet\__init__.py -> build\bdist.win32\wininst\PURELIB\chardet
running install_egg_info
Writing build\bdist.win32\wininst\PURELIB\chardet-1.0.2-py3.1.egg-info
creating 'c:\users\pilgrim\appdata\local\temp\tmp2f4h7e.zip' and adding '.' to it
adding 'PURELIB\chardet-1.0.2-py3.1.egg-info'
adding 'PURELIB\chardet\big5freq.py'
adding 'PURELIB\chardet\big5prober.py'
...
adding 'PURELIB\chardet\universaldetector.py'
adding 'PURELIB\chardet\utf8prober.py'
adding 'PURELIB\chardet\__init__.py'
removing 'build\bdist.win32\wininst' (and everything under it)
c:\Users\pilgrim\chardet> dir dist
c:\Users\pilgrim\chardet>dir dist
Volume in drive C has no label.
Volume Serial Number is AADE-E29F
Directory of c:\Users\pilgrim\chardet\dist
07/30/2009 10:14 PM <DIR> .
07/30/2009 10:14 PM <DIR> ..
07/30/2009 10:14 PM 371,236 chardet-1.0.2.win32.exe
07/30/2009 06:29 PM 206,440 chardet-1.0.2.zip
2 File(s) 577,676 bytes
2 Dir(s) 61,424,070,656 bytes free
Distutils
ã¯ãLinuxãŠãŒã¶åãã®ã€ã³ã¹ããŒã«ããã±ãŒãžãæ§ç¯ããæå©ããããŠãããã
Linuxã§ãœãããŠã§ã¢ãé
åžããŠããããããªãã
äž»èŠãªLinuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ãœãããŠã§ã¢ã®ããã±ãŒãžåãå°éãšããŠããã³ãã¥ããã£ã¡ã³ããšååããã»ããããã
äŸãšããŠãchardetã©ã€ãã©ãªã¯Debian GNU/Linux ãªããžããªã®äžã«ããïŒåŸã£ãŠãããã¯Ubuntu ãªããžããªã®äžã«ãããïŒããã®ããã±ãŒãžã¯ããæ¥çªç¶å§¿ãçŸããã Debianã³ãã¥ããã£ã¯Pythonã©ã€ãã©ãªãããã±ãŒãžã³ã°ããç¬èªã®ããªã·ãŒãæã£ãŠãããDebianã®python-chardetã©ã€ãã©ãªã¯ãããã®æ £ç¿ã«åŸãããã«äœãããŠããã ãã®ããã±ãŒãžã¯Debianã®ãªããžããªã®äžã«åç¶ããŠããã®ã§ã ã³ã³ãã¥ãŒã¿ã®ç®¡çã®ããã«éžæããã·ã¹ãã ã®èšå®ã«ããããDebianã®ãŠãŒã¶ã¯ã»ãã¥ãªãã£ã¢ããããŒããæ°ããããŒãžã§ã³ãåãåãããšã«ãªãã
ãœãããŠã§ã¢ãPython Package Index
ã«ã¢ããããŒãããããã»ã¹ã«ã¯3ã€ã®ã¹ããããããã
setup.py sdist
ãš setup.py bdist_*
ã§äœæããããã±ãŒãžãã¢ããããŒããããã¢ã«ãŠã³ããäœæããããã«PyPI ãŠãŒã¶ç»é²ããŒãž ãžè¡ãã åžæã®ãŠãŒã¶åããã¹ã¯ãŒããæå¹ãªé»åã¡ãŒã«ã¢ãã¬ã¹ãå ¥åãã Registerãã¿ã³ãã¯ãªãã¯ãããïŒpgpããŒãgpgããŒãæäŸããããšãã§ãããããããæã£ãŠããªãã£ããã ãããã®æå³ãåãããªããŠããå¿é ã¯èŠããªãïŒã PyPIããæ°å以å ã«ãã¡ãŒã«ã¢ãã¬ã¹ãæ€èšŒããããã®ãªã³ã¯ãæžãããŠããé»åã¡ãŒã«ãå±ãã¯ããªã®ã§ããã確èªãç»é²åŠçãå®äºãããããã«ãã®ãªã³ã¯ãã¯ãªãã¯ã
ä»åºŠã¯ããœãããŠã§ã¢ãPyPIã«ç»é²ãããããã¢ããããŒãããå¿ èŠãããã ããã¯1ã€ã®ã¹ãããã§ãã¹ãŠå®è¡ã§ããã
c:\Users\pilgrim\chardet> c:\python31\python.exe setup.py register sdist bdist_wininst upload 1
running register
We need to know who you are, so please choose either:
1. use your existing login,
2. register as a new user,
3. have the server generate a new password for you (and email it to you), or
4. quit
Your selection [default 1]: 1 2
Username: MarkPilgrim 3
Password:
Registering chardet to http://pypi.python.org/pypi 4
Server response (200): OK
running sdist 5
... output trimmed for brevity ...
running bdist_wininst 6
... output trimmed for brevity ...
running upload 7
Submitting dist\chardet-1.0.2.zip to http://pypi.python.org/pypi
Server response (200): OK
Submitting dist\chardet-1.0.2.win32.exe to http://pypi.python.org/pypi
Server response (200): OK
I can store your PyPI login so future submissions will be faster.
(the login will be stored in c:\home\.pypirc)
Save your login (y/N)?n 8
ãããžã§ã¯ããåããŠãªãªãŒã¹ãããšãã¯ãDistutilsããœãããŠã§ã¢ãPython Package Indexã«è¿œå ããããã«å°çšã®urlãäžããããã以éã®å Žåã¯ããããžã§ã¯ãã®ã¡ã¿ããŒã¿ãã倿Žãããsetup.pyã®ãã©ã¡ãŒã¿ãžãšæŽæ°ããã ãã ãæ¬¡ã«ããœãŒã¹ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®æ§ç¯ (sdist) ãšãWindowsã€ã³ã¹ããŒã©ã®æ§ç¯ (bdist_wininst) ãè¡ã£ãŠãããããPyPIã«ã¢ããããŒããã (upload)ã
âuse your existing login.â ãéžæããããã«ã1ãšå ¥åããŠENTERããŒãæŒããã
PyPIãŠãŒã¶ç»é²ããŒãžã§å ¥åãããŠãŒã¶åãšãã¹ã¯ãŒããå ¥åããããDistuilsã¯å ¥åãããã¹ã¯ãŒãããšã³ãŒããªãããæåã®ä»£ããã«ã¢ã¹ã¿ãªã¹ã¯ããšã³ãŒããããšããªãããã¹ã¯ãŒããå ¥åããŠENTERãæŒããã
Distutilsã¯ããã±ãŒãžãPython Package Indexã«ç»é²ãâŠâŠ
âŠâŠãœãŒã¹ãã£ã¹ããªãã¥ãŒã·ã§ã³ãæ§ç¯ãâŠâŠ
âŠâŠWindowsçšã€ã³ã¹ããŒã©ãæ§ç¯ãâŠâŠ
âŠâŠãããŠããããäž¡æ¹ãPython Package Indexã«ã¢ããããŒãããã
ããæ°ããããŒãžã§ã³ã®ãªãªãŒã¹åŠçãèªååãããã®ã§ããã°ãPyPIã®èšŒææžãããŒã«ã«ãã¡ã€ã«ã«ä¿åããŠããå¿ èŠããããããã¯ãŸã£ããã»ãã¥ã¢ã§ã¯ãªãã®ã§ããŸã£ããä»»æã ã
ããã§ãPython Package Indexã«ããã±ãŒãžã®ããŒãžãæã«å ¥ãã. ã¢ãã¬ã¹ã¯ http://pypi.python.org/pypi/NAME ã«ãªãã ïŒNAMEã«ã¯setup.pyãã¡ã€ã«ã®nameãã©ã¡ãŒã¿ã«æž¡ããæååãå ¥ãïŒã
æ°ããããŒãžã§ã³ããªãªãŒã¹ããããšãã¯ã
setup.py
ãåã«æ°ããããŒãžã§ã³çªå·ã§æŽæ°ããŠã
åãã¢ããããŒãã³ãã³ããåã³å®è¡ããïŒ
c:\Users\pilgrim\chardet> c:\python31\python.exe setup.py register sdist bdist_wininst upload