10.7 �行目录或压缩文件¶
问题¶
您有一个已æˆ�长为包å�«å¤šä¸ªæ–‡ä»¶çš„应用,它已远ä¸�å†�是一个简å�•çš„è„šæœ¬ï¼Œä½ æƒ³å�‘用户æ��供一些简å�•的方法è¿�行这个程åº�。
解决方案¶
å¦‚æžœä½ çš„åº”ç”¨ç¨‹åº�å·²ç»�æœ‰å¤šä¸ªæ–‡ä»¶ï¼Œä½ å�¯ä»¥æŠŠä½ 的应用程åº�æ”¾è¿›å®ƒè‡ªå·±çš„ç›®å½•å¹¶æ·»åŠ ä¸€ä¸ª__main__.py文件。 举个例å�ï¼Œä½ å�¯ä»¥åƒ�è¿™æ ·åˆ›å»ºç›®å½•ï¼š
myapplication/
spam.py
bar.py
grok.py
__main__.py
如果__main__.pyå˜åœ¨ï¼Œä½ å�¯ä»¥ç®€å�•地在顶级目录è¿�行Python解释器:
bash % python3 myapplication
解释器将执行__main__.py文件作为主程�。
å¦‚æžœä½ å°†ä½ çš„ä»£ç �打包æˆ�zip文件,这ç§�技术å�Œæ ·ä¹Ÿé€‚用,举个例å�:
bash % ls
spam.py bar.py grok.py __main__.py
bash % zip -r myapp.zip *.py
bash % python3 myapp.zip
... output from __main__.py ...
讨论¶
创建一个目录或zipæ–‡ä»¶å¹¶æ·»åŠ __main__.py文件æ�¥å°†ä¸€ä¸ªæ›´å¤§çš„Python应用打包是å�¯è¡Œçš„ã€‚è¿™å’Œä½œä¸ºæ ‡å‡†åº“è¢«å®‰è£…åˆ°Python库的代ç �包是有一点区别的。相å��,这å�ªæ˜¯è®©åˆ«äººæ‰§è¡Œçš„代ç �包。
由于目录和zip文件与æ£å¸¸æ–‡ä»¶æœ‰ä¸€ç‚¹ä¸�å�Œï¼Œä½ å�¯èƒ½è¿˜éœ€è¦�å¢žåŠ ä¸€ä¸ªshellè„šæœ¬ï¼Œä½¿æ‰§è¡Œæ›´åŠ å®¹æ˜“ã€‚ä¾‹å¦‚ï¼Œå¦‚æžœä»£ç �文件å��为myapp.zipï¼Œä½ å�¯ä»¥åˆ›å»ºè¿™æ ·ä¸€ä¸ªé¡¶çº§è„šæœ¬ï¼š
#!/usr/bin/env python3 /usr/local/bin/myapp.zip