46 ¿·¤·¤¤Distutils¥³¥Þ¥ó¥É¤ÎºîÀ®

¤³¤Î¥»¥¯¥·¥ç¥ó¤Ç¤ÏDistutils¤Î¿·¤·¤¤¥³¥Þ¥ó¥É¤òºîÀ®¤¹¤ë¼ê½ç¤Î³µÍפò¤·¤á¤·¤Þ¤¹¡£

¿·¤·¤¤¥³¥Þ¥ó¥É¤Ï distutils.command¥Ñ¥Ã¥±¡¼¥¸Ãæ¤Î¥â¥¸¥å¡¼¥ë¤Ë ºî¤é¤ì¤Þ¤¹¡£command_template¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥µ¥ó¥×¥ë¤Î¥Æ¥ó ¥×¥ì¡¼¥È¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤ò¼ÂÁõ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¥³¥Þ¥ó¥É¤ÈƱ̾¤Î ¿·¤·¤¤¥â¥¸¥å¡¼¥ë¤Ë¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤³¤Î¥â¥¸¥å¡¼¥ë¤Ï¥â¥¸¥å¡¼¥ë(¤È¥³¥Þ¥ó¥É)¤ÈƱ¤¸Ì¾Á°¤Î¥¯¥é¥¹¤ò¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¤½¤Î¤¿¤á¡¢peel_banana¥³¥Þ¥ó¥É(¥æ¡¼¥¶¤Ï "setup.py peel_banana"¤È¼Â¹Ô¤Ç¤­¤Þ¤¹)¤ò¼ÂÁõ¤¹¤ëºÝ¤Ë¤Ï¡¢ command_template¤ò distutils/command/peel_banana.py¤Ë¥³ ¥Ô¡¼¤·¡¢distutils.cmd.Command¤Î¥µ¥Ö¥¯¥é¥¹ peel_banana ¥¯¥é¥¹¤ò¼ÂÁõ¤¹¤ë¤è¤¦¤ËÊÔ½¸¤·¤Æ¤¯¤À¤µ¤¤¡£

Command¤Î¥µ¥Ö¥¯¥é¥¹¤Ï°Ê²¼¤Î¥á¥½¥Ã¥É¤ò¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

initialize_options()( ¤)
³¤Î¥³¥Þ¥ó¥É¤¬¥µ¥Ý¡¼¥È¤¹¤ëÁ´¤Æ¤Î¥ª¥×¥·¥ç¥ó¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤòÀßÄꤷ¤Þ¤¹¡£ ¤³¤ì¤é¤Î¥Ç¥Õ¥©¥ë¥È¤Ï¾¤Î¥³¥Þ¥ó¥É¤ä¥»¥Ã¥È¥¢¥Ã¥×¥¹¥¯¥ê¥×¥È¡¢ÀßÄê¥Õ¥¡¥¤¥ë ¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¤è¤Ã¤Æ¾å½ñ¤­¤µ¤ì¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£ ¤½¤Î¤¿¤á¥ª¥×¥·¥ç¥ó´Ö¤Î°Í¸´Ø·¸¤òµ­½Ò¤¹¤ë¤Ë¤ÏŬÀڤʾì½ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ °ìÈÌŪ¤Ëinitialize_options()¤Ïñ¤Ë"self.foo = None" ¤Î¤è ¤¦¤ÊÄêµÁ¤À¤±¤ò¹Ô¤¤¤Þ¤¹¡£

finalize_options( )
¤³¤Î¥³¥Þ¥ó¥É¤¬¥µ¥Ý¡¼¥È¤¹¤ëÁ´¤Æ¤Î¥ª¥×¥·¥ç¥ó¤ÎºÇ½ªÅª¤ÊÃͤòÀßÄꤷ¤Þ¤¹¡£ ¤³¤ì¤Ï²Äǽ¤Ê¸Â¤êÃÙ¤¯¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¥³¥Þ¥ó¥É¥é¥¤¥ó¤ä¾¤Î¥³¥Þ¥ó¥É ¤Ë¤è¤ë¥ª¥×¥·¥ç¥ó¤ÎÂåÆþ¤Î¤¢¤È¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£ ¤½¤Î¤¿¤á¡¢¥ª¥×¥·¥ç¥ó´Ö¤Î°Í¸´Ø·¸¤òµ­½Ò¤¹¤ë¤Î¤ËŬ¤·¤¿¾ì½ê¤Ç¤¹¡£ ¤â¤· foo ¤¬ bar ¤Ë°Í¸¤·¤Æ¤ª¤ê¡¢¤«¤Ä ¤Þ¤Àfoo¤¬ initialize_options()¤ÇÄêµÁ¤µ¤ì¤¿ÃͤΤޤޤʤ顢 foo ¤òbar¤«¤éÂåÆþ¤·¤Æ¤â°ÂÁ´¤Ç¤¹¡£

run( )
¥³¥Þ¥ó¥É¤ÎËÜÂΤǤ¹¡£¼Â¹Ô¤¹¤ë¤Ù¤­¥¢¥¯¥·¥ç¥ó¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£ initialize_options() ¤Ç½é´ü²½¤µ¤ì¡¢Â¾¤Î¥³¥Þ¥ó¥É ¤µ¤ì¡¢¥»¥Ã¥È¥¢¥Ã¥×¥¹¥¯¥ê¥×¥È¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¡¢ÀßÄê¥Õ¥¡¥¤¥ë¤Ç¥«¥¹¥¿¥Þ¥¤ ¥º¤µ¤ì¡¢finalize_options()¤ÇÀßÄꤵ¤ì¤¿¥ª¥×¥·¥ç¥ó¤¬¥¢¥¯¥·¥ç¥ó¤òÀ©¸æ¤·¤Þ¤¹¡£ üËö¤Ø¤Î½ÐÎϤȥե¡¥¤¥ë¥·¥¹¥Æ¥à¤È¤Î¤ä¤ê¤È¤ê¤ÏÁ´¤Ærun()¤¬¹Ô¤¤¤Þ¤¹¡£

sub_commands¤Ï ¥³¥Þ¥ó¥É¤Î``¥Õ¥¡¥ß¥ê¡¼''¤òÄê¼°²½¤·¤¿¤â¤Î¤Ç¤¹¡£ ¤¿¤È¤¨¤Ð install ¤Ï ¥µ¥Ö¥³¥Þ¥ó¥É install_lib¡¢install_headers¤Ê¤É¤Î¿Æ¤Ç¤¹¡£ ¥³¥Þ¥ó¥É¥Õ¥¡¥ß¥ê¡¼¤Î¿Æ¤Ï sub_commands¤ò¥¯¥é¥¹Â°À­¤È¤·¤Æ»ý¤Á¤Þ¤¹¡£ 2Í×ÁǤΥ¿¥×¥ë"(command_name, predicate)"¤Î¥ê¥¹¥È¤Ç¡¢ command_name¤Ë¤Ïʸ»úÎó¡¢predicate¤Ë¤Ï¿Æ¥³¥Þ¥ó¥É¤Î¥á¥½¥Ã¥É¤Ç¡¢ ¸½ºß¤Î¾õ¶·¤¬¥³¥Þ¥ó¥É¼Â¹Ô¤Ë¤Õ¤µ¤ï¤·¤¤¤«¤É¤¦¤«È½ÃǤ¹¤ë¤â¤Î¤ò»ØÄꤷ¤Þ¤¹¡£ (Î㤨¤Ð install_headers ¤Ï¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤Ù¤­ C¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë ¤¬¤¢¤ë»þ¤À¤±Í­¸ú¤Ç¤¹¡£) ¤â¤· predicate ¤¬ None ¤Ê¤é¡¢¤½¤Î¥³¥Þ¥ó ¥É¤Ï¾ï¤ËÍ­¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£

sub_commands ¤Ï Ä̾說¥é¥¹¤ÎºÇ¸å¤ÇÄêµÁ¤µ¤ì¤Þ¤¹¡£ ¤³¤ì¤Ïpredicate ¤Ï bound¤µ¤ì¤Æ¤¤¤Ê¤¤¥á¥½¥Ã¥É¤Ë¤Ê¤ë¤Î¤Ç¡¢Á´¤ÆÀè¤ËÄêµÁ¤µ¤ì¤Æ¤¤ ¤ëɬÍפ¬¤¢¤ë¤¿¤á¤Ç¤¹¡£

ɸ½àŪ¤ÊÎã¤Ïinstall ¥³¥Þ¥ó¥É¤Ç¤¹¡£

¤´°Õ¸«¤ä¤´»ØŦ¤ò¤ª´ó¤»¤Ë¤Ê¤ê¤¿¤¤Êý¤Ï¡¢ ¤³¤Î¥É¥­¥å¥á¥ó¥È¤Ë¤Ä¤¤¤Æ... ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£