awesome-python-cn/mkdocs/search_index.json

484 lines
207 KiB
JSON

{
"docs": [
{
"location": "/",
"text": "Python \u8d44\u6e90\u5927\u5168\u4e2d\u6587\u7248\n\n\n\u6211\u60f3\u5f88\u591a\u7a0b\u5e8f\u5458\u5e94\u8be5\u8bb0\u5f97 GitHub \u4e0a\u6709\u4e00\u4e2a Awesome - XXX \u7cfb\u5217\u7684\u8d44\u6e90\u6574\u7406\u3002\nawesome-python\n \u662f vinta \u53d1\u8d77\u7ef4\u62a4\u7684 Python \u8d44\u6e90\u5217\u8868\uff0c\u5185\u5bb9\u5305\u62ec\uff1aWeb \u6846\u67b6\u3001\u7f51\u7edc\u722c\u866b\u3001\u7f51\u7edc\u5185\u5bb9\u63d0\u53d6\u3001\u6a21\u677f\u5f15\u64ce\u3001\u6570\u636e\u5e93\u3001\u6570\u636e\u53ef\u89c6\u5316\u3001\u56fe\u7247\u5904\u7406\u3001\u6587\u672c\u5904\u7406\u3001\u81ea\u7136\u8bed\u8a00\u5904\u7406\u3001\u673a\u5668\u5b66\u4e60\u3001\u65e5\u5fd7\u3001\u4ee3\u7801\u5206\u6790\u7b49\u3002\u7531\u4f2f\u4e50\u5728\u7ebf\u6301\u7eed\u66f4\u65b0\u3002\n\n\nAwesome \u7cfb\u5217\u867d\u7136\u633a\u5168\uff0c\u4f46\u57fa\u672c\u53ea\u5bf9\u6536\u5f55\u7684\u8d44\u6e90\u505a\u4e86\u6781\u4e3a\u7b80\u8981\u7684\u4ecb\u7ecd\uff0c\u5982\u679c\u6709\u66f4\u8be6\u7ec6\u7684\u4e2d\u6587\u4ecb\u7ecd\uff0c\u5bf9\u76f8\u5e94\u5f00\u53d1\u8005\u7684\u5e2e\u52a9\u4f1a\u66f4\u5927\u3002\u8fd9\u4e5f\u662f\u6211\u4eec\u53d1\u8d77\u8fd9\u4e2a\u5f00\u6e90\u9879\u76ee\u7684\u521d\u8877\u3002\n\n\n\u5173\u4e8e\u9879\u76ee\n\n\n\u6211\u4eec\u8981\u505a\u4ec0\u4e48\uff1f\n\n\n\n\n\u57fa\u4e8e awesome-python \u5217\u8868\uff0c\u6211\u4eec\u5c06\u5bf9\u5176\u4e2d\u7684\u5404\u4e2a\u8d44\u6e90\u9879\u8fdb\u884c\u7f16\u8bd1\u6574\u7406\u3002\u6b64\u5916\u8fd8\u5c06\u4ece\u5176\u4ed6\u6765\u6e90\u8865\u5145\u597d\u8d44\u6e90\u3002\n\n\n\u6574\u7406\u540e\u7684\u5185\u5bb9\uff0c\u5c06\u6536\u5f55\u5728\n\u4f2f\u4e50\u5728\u7ebf\u8d44\u6e90\u9891\u9053\n\u3002\u53ef\u53c2\u8003\u5df2\u6574\u7406\u7684\u5185\u5bb9\uff1a\n\n\n\u300a\nScrapy\uff1aPython \u7684\u722c\u866b\u6846\u67b6\n\u300b\n\n\n\u300a\nFlask\uff1a\u4e00\u4e2a\u4f7f\u7528 Python \u7f16\u5199\u7684\u8f7b\u91cf\u7ea7 Web \u5e94\u7528\u6846\u67b6\n\u300b\n\n\n\n\n\u5982\u4f55\u4e3a\u5217\u8868\u8d21\u732e\u65b0\u8d44\u6e90\uff1f\n\n\n\u6b22\u8fce\u5927\u5bb6\u4e3a\u5217\u8868\u8d21\u732e\u9ad8\u8d28\u91cf\u7684\u65b0\u8d44\u6e90\uff0c\u63d0\u4ea4 PR \u65f6\u8bf7\u53c2\u7167\u4ee5\u4e0b\u8981\u6c42\uff1a\n\n\n\n\n\u8bf7\u786e\u4fdd\u63a8\u8350\u7684\u8d44\u6e90\u81ea\u5df1\u4f7f\u7528\u8fc7\n\n\n\u63d0\u4ea4 PR \u65f6\u8bf7\u6ce8\u660e\u63a8\u8350\u7406\u7531\n\n\n\n\n\u8d44\u6e90\u5217\u8868\u7ba1\u7406\u6536\u5230 PR \u8bf7\u6c42\u540e\uff0c\u4f1a\u5b9a\u671f\uff08\u6bcf\u5468\uff09\u5728\u5fae\u535a\u8f6c\u53d1\u672c\u5468\u63d0\u4ea4\u7684 PR \u5217\u8868\uff0c\u5e76\u5728\u5fae\u535a\u4e0a\u9762\u542c\u53d6\u4f7f\u7528\u8fc7\u8fd9\u4e9b\u8d44\u6e90\u7684\u610f\u89c1\u3002\u786e\u8ba4\u901a\u8fc7\u540e\uff0c\u4f1a\u52a0\u5165\u8d44\u6e90\u5927\u5168\u3002\n\n\n\u611f\u8c22\u60a8\u7684\u8d21\u732e\uff01\n\n\n\u672c\u9879\u76ee\u7684\u53c2\u4e0e\u8005\n\n\n\n\n\u7ef4\u62a4\u8005\uff1a\n\n\n\u8d21\u732e\u8005\uff1a\n\u827e\u51cc\u98ce\n\u3001Namco\u3001\nDaetalus\n\u3001\n\u9ec4\u5229\u6c11\n\u3001\natupal\n\u3001\nrainbow\n\u3001\n\u6728\u5934lbj\n\u3001\nbeyondwu\n\u3001\ncissoid\n\u3001\n\u674e\u5e7f\u80dc\n\u3001\npolyval\n\u3001\n\u51b0\u658c\n\u3001\n\u8d75\u53f6\u5b87\n\u3001\n\u043b stalgic\n\u3001\n\u7855\u6069\n\u3001\nstrongit\n\u3001\nyuukilp\n\u3001\nchenjiandongx\n\u3001\nautopenguin\n\u3001\nvisonforcoding\n\u3001\nSuper\u8d5b\u4e9a\u4eba\n\u3001\nSince-future\n\u3001\nknktc\n\n\n\n\n\u6ce8\uff1a\u540d\u5355\u4e0d\u5206\u6392\u540d\uff0c\u4e0d\u5b9a\u671f\u8865\u5145\u66f4\u65b0\n\n\n\u8d44\u6e90\u5217\u8868\n\n\n\u73af\u5883\u7ba1\u7406\n\n\n\u7ba1\u7406 Python \u7248\u672c\u548c\u73af\u5883\u7684\u5de5\u5177\n\n\n\n\np\uff1a\u975e\u5e38\u7b80\u5355\u7684\u4ea4\u4e92\u5f0f python \u7248\u672c\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyenv\uff1a\u7b80\u5355\u7684 Python \u7248\u672c\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nVex\uff1a\u53ef\u4ee5\u5728\u865a\u62df\u73af\u5883\u4e2d\u6267\u884c\u547d\u4ee4\u3002\n\u5b98\u7f51\n\n\nvirtualenv\uff1a\u521b\u5efa\u72ec\u7acb Python \u73af\u5883\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nvirtualenvwrapper\uff1avirtualenv \u7684\u4e00\u7ec4\u6269\u5c55\u3002\n\u5b98\u7f51\n\n\n\n\n\u5305\u7ba1\u7406\n\n\n\u7ba1\u7406\u5305\u548c\u4f9d\u8d56\u7684\u5de5\u5177\u3002\n\n\n\n\npip\uff1aPython \u5305\u548c\u4f9d\u8d56\u5173\u7cfb\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npip-tools\uff1a\u4fdd\u8bc1 Python \u5305\u4f9d\u8d56\u5173\u7cfb\u66f4\u65b0\u7684\u4e00\u7ec4\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npipenv\uff1aPyhton \u5b98\u65b9\u63a8\u8350\u7684\u65b0\u4e00\u4ee3\u5305\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nconda\uff1a\u8de8\u5e73\u53f0\uff0cPython \u4e8c\u8fdb\u5236\u5305\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nCurdling\uff1a\u7ba1\u7406 Python \u5305\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nwheel\uff1aPython \u5206\u53d1\u7684\u65b0\u6807\u51c6\uff0c\u610f\u5728\u53d6\u4ee3 eggs\u3002\n\u5b98\u7f51\n\n\n\n\n\u5305\u4ed3\u5e93\n\n\n\u672c\u5730 PyPI \u4ed3\u5e93\u670d\u52a1\u548c\u4ee3\u7406\u3002\n\n\n\n\nwarehouse\n\uff1a\u4e0b\u4e00\u4ee3 PyPI\u3002\n\u5b98\u7f51\n\n\nbandersnatch\uff1aPyPA \u63d0\u4f9b\u7684 PyPI \u955c\u50cf\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ndevpi\uff1aPyPI \u670d\u52a1\u548c\u6253\u5305/\u6d4b\u8bd5/\u5206\u53d1\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nlocalshop\uff1a\u672c\u5730 PyPI \u670d\u52a1\uff08\u81ea\u5b9a\u4e49\u5305\u5e76\u4e14\u81ea\u52a8\u5bf9 PyPI \u955c\u50cf\uff09\u3002\n\u5b98\u7f51\n\n\n\n\n\u5206\u53d1\n\n\n\u6253\u5305\u4e3a\u53ef\u6267\u884c\u6587\u4ef6\u4ee5\u4fbf\u5206\u53d1\u3002\n\n\n\n\nPyInstaller\uff1a\u5c06 Python \u7a0b\u5e8f\u8f6c\u6362\u6210\u72ec\u7acb\u7684\u6267\u884c\u6587\u4ef6\uff08\u8de8\u5e73\u53f0\uff09\u3002\n\u5b98\u7f51\n\n\ndh-virtualenv\uff1a\u6784\u5efa\u5e76\u5c06 virtualenv \u865a\u62df\u73af\u5883\u4f5c\u4e3a\u4e00\u4e2a Debian \u5305\u6765\u53d1\u5e03\u3002\n\u5b98\u7f51\n\n\nNuitka\uff1a\u5c06\u811a\u672c\u3001\u6a21\u5757\u3001\u5305\u7f16\u8bd1\u6210\u53ef\u6267\u884c\u6587\u4ef6\u6216\u6269\u5c55\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npy2app\uff1a\u5c06 Python \u811a\u672c\u53d8\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u5305\uff08Mac OS X\uff09\u3002\n\u5b98\u7f51\n\n\npy2exe\uff1a\u5c06 Python \u811a\u672c\u53d8\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u5305\uff08Windows\uff09\u3002\n\u5b98\u7f51\n\n\npynsist\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa Windows \u5b89\u88c5\u7a0b\u5e8f\u7684\u5de5\u5177\uff0c\u53ef\u4ee5\u5728\u5b89\u88c5\u7a0b\u5e8f\u4e2d\u6253\u5305 Python \u672c\u8eab\u3002\n\u5b98\u7f51\n\n\n\n\n\u6784\u5efa\u5de5\u5177\n\n\n\u5c06\u6e90\u7801\u7f16\u8bd1\u6210\u8f6f\u4ef6\u3002\n\n\n\n\nbuildout\uff1a\u4e00\u4e2a\u6784\u5efa\u7cfb\u7edf\uff0c\u4ece\u591a\u4e2a\u7ec4\u4ef6\u6765\u521b\u5efa\uff0c\u7ec4\u88c5\u548c\u90e8\u7f72\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nBitBake\uff1a\u9488\u5bf9\u5d4c\u5165\u5f0f Linux \u7684\u7c7b\u4f3c make \u7684\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nfabricate\uff1a\u5bf9\u4efb\u4f55\u8bed\u8a00\u81ea\u52a8\u627e\u5230\u4f9d\u8d56\u5173\u7cfb\u7684\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPlatformIO\uff1a\u591a\u5e73\u53f0\u547d\u4ee4\u884c\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPyBuilder\uff1a\u7eaf Python \u5b9e\u73b0\u7684\u6301\u7eed\u5316\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nSCons\uff1a\u8f6f\u4ef6\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u4ea4\u4e92\u5f0f\u89e3\u6790\u5668\n\n\n\u4ea4\u4e92\u5f0f Python \u89e3\u6790\u5668\u3002\n\n\n\n\nIPython\uff1a\u529f\u80fd\u4e30\u5bcc\u7684\u5de5\u5177\uff0c\u975e\u5e38\u6709\u6548\u7684\u4f7f\u7528\u4ea4\u4e92\u5f0f Python\u3002\n\u5b98\u7f51\n\n\nbpython\n\uff1a\u754c\u9762\u4e30\u5bcc\u7684 Python \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nptpython\uff1a\u9ad8\u7ea7\u4ea4\u4e92\u5f0f Python \u89e3\u6790\u5668\uff0c \u6784\u5efa\u4e8e \npython-prompt-toolkit\n \u4e4b\u4e0a\u3002\n\u5b98\u7f51\n\n\n\n\n\u6587\u4ef6\n\n\n\u6587\u4ef6\u7ba1\u7406\u548c MIME\uff08\u591a\u7528\u9014\u7684\u7f51\u9645\u90ae\u4ef6\u6269\u5145\u534f\u8bae\uff09\u7c7b\u578b\u68c0\u6d4b\u3002\n\n\n\n\naiofiles\uff1a\u57fa\u4e8e asyncio\uff0c\u63d0\u4f9b\u6587\u4ef6\u5f02\u6b65\u64cd\u4f5c\u3002\n\u5b98\u7f51\n\n\nimghdr\uff1a\uff08Python \u6807\u51c6\u5e93\uff09\u68c0\u6d4b\u56fe\u7247\u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\nmimetypes\uff1a\uff08Python \u6807\u51c6\u5e93\uff09\u5c06\u6587\u4ef6\u540d\u6620\u5c04\u4e3a MIME \u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\npath.py\uff1a\u5bf9 os.path \u8fdb\u884c\u5c01\u88c5\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npathlib\uff1a\uff08Python3.4+ \u6807\u51c6\u5e93\uff09\u8de8\u5e73\u53f0\u7684\u3001\u9762\u5411\u5bf9\u8c61\u7684\u8def\u5f84\u64cd\u4f5c\u5e93\u3002\n\u5b98\u7f51\n\n\npython-magic\uff1a\u6587\u4ef6\u7c7b\u578b\u68c0\u6d4b\u7684\u7b2c\u4e09\u65b9\u5e93 libmagic \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nUnipath\uff1a\u7528\u9762\u5411\u5bf9\u8c61\u7684\u65b9\u5f0f\u64cd\u4f5c\u6587\u4ef6\u548c\u76ee\u5f55\u3002\n\u5b98\u7f51\n\n\nwatchdog\uff1a\u7ba1\u7406\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\u7684 API \u548c shell \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u65e5\u671f\u548c\u65f6\u95f4\n\n\n\u64cd\u4f5c\u65e5\u671f\u548c\u65f6\u95f4\u7684\u7c7b\u5e93\u3002\n\n\n\n\narrow\uff1a\u66f4\u597d\u7684 Python \u65e5\u671f\u65f6\u95f4\u64cd\u4f5c\u7c7b\u5e93\u3002\n\u5b98\u7f51\n\n\nChronyk\uff1aPython 3 \u7684\u7c7b\u5e93\uff0c\u7528\u4e8e\u89e3\u6790\u624b\u5199\u683c\u5f0f\u7684\u65f6\u95f4\u548c\u65e5\u671f\u3002\n\u5b98\u7f51\n\n\ndateutil\uff1aPython datetime \u6a21\u5757\u7684\u6269\u5c55\u3002\n\u5b98\u7f51\n\n\ndelorean\uff1a\u89e3\u51b3 Python \u4e2d\u6709\u5173\u65e5\u671f\u5904\u7406\u7684\u68d8\u624b\u95ee\u9898\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nmaya\uff1a\u4eba\u6027\u5316\u7684\u65f6\u95f4\u5904\u7406\u5e93\u3002\n\u5b98\u7f51\n\n\nmoment\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u65f6\u95f4\u548c\u65e5\u671f\u7684 Python \u5e93\u3002\u7075\u611f\u6765\u81ea\u4e8e Moment.js\u3002\n\u5b98\u7f51\n\n\npendulum\uff1a\u4e00\u4e2a\u6bd4 arrow \u66f4\u5177\u6709\u660e\u786e\u7684\uff0c\u53ef\u9884\u6d4b\u7684\u884c\u4e3a\u7684\u65f6\u95f4\u64cd\u4f5c\u5e93\u3002\n\u5b98\u7f51\n\n\nPyTime\uff1a\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684 Python \u6a21\u5757\uff0c\u7528\u4e8e\u901a\u8fc7\u5b57\u7b26\u4e32\u6765\u64cd\u4f5c\u65e5\u671f/\u65f6\u95f4\u3002\n\u5b98\u7f51\n\n\npytz\uff1a\u73b0\u4ee3\u4ee5\u53ca\u5386\u53f2\u7248\u672c\u7684\u4e16\u754c\u65f6\u533a\u5b9a\u4e49\u3002\u5c06\u65f6\u533a\u6570\u636e\u5e93\u5f15\u5165 Python\u3002\n\u5b98\u7f51\n\n\nwhen.py\uff1a\u63d0\u4f9b\u7528\u6237\u53cb\u597d\u7684\u51fd\u6570\u6765\u5e2e\u52a9\u7528\u6237\u8fdb\u884c\u5e38\u7528\u7684\u65e5\u671f\u548c\u65f6\u95f4\u64cd\u4f5c\u3002\n\u5b98\u7f51\n\n\n\n\n\u6587\u672c\u5904\u7406\n\n\n\u7528\u4e8e\u89e3\u6790\u548c\u64cd\u4f5c\u6587\u672c\u7684\u5e93\u3002\n\n\n\n\n\u901a\u7528\n\n\nchardet\n\uff1a\u5b57\u7b26\u7f16\u7801\u68c0\u6d4b\u5668\uff0c\u517c\u5bb9 Python2 \u548c Python3\u3002\n\u5b98\u7f51\n\n\ndifflib\uff1a(Python \u6807\u51c6\u5e93)\u5e2e\u52a9\u6211\u4eec\u8fdb\u884c\u5dee\u5f02\u5316\u6bd4\u8f83\u3002\n\u5b98\u7f51\n\n\nftfy\uff1a\u8ba9 Unicode \u6587\u672c\u66f4\u5b8c\u6574\u66f4\u8fde\u8d2f\u3002\n\u5b98\u7f51\n\n\nfuzzywuzzy\uff1a\u6a21\u7cca\u5b57\u7b26\u4e32\u5339\u914d\u3002\n\u5b98\u7f51\n\n\nLevenshtein\uff1a\u5feb\u901f\u8ba1\u7b97\u7f16\u8f91\u8ddd\u79bb\u4ee5\u53ca\u5b57\u7b26\u4e32\u7684\u76f8\u4f3c\u5ea6\u3002\n\u5b98\u7f51\n\n\npangu.py\uff1a\u5728\u4e2d\u65e5\u97e9\u8bed\u5b57\u7b26\u548c\u6570\u5b57\u5b57\u6bcd\u4e4b\u95f4\u6dfb\u52a0\u7a7a\u683c\u3002\n\u5b98\u7f51\n\n\npypinyin\uff1a\u6c49\u5b57\u62fc\u97f3\u8f6c\u6362\u5de5\u5177 Python \u7248\u3002\n\u5b98\u7f51\n\n\nshortuuid\uff1a\u4e00\u4e2a\u751f\u6210\u5668\u5e93\uff0c\u7528\u4ee5\u751f\u6210\u7b80\u6d01\u7684\uff0c\u660e\u767d\u7684\uff0cURL \u5b89\u5168\u7684 UUID\u3002\n\u5b98\u7f51\n\n\nsimplejson\n\uff1aPython \u7684 JSON \u7f16\u7801\u3001\u89e3\u7801\u5668\u3002\n\u5b98\u7f51\n\n\nunidecode\uff1aUnicode \u6587\u672c\u7684 ASCII \u8f6c\u6362\u5f62\u5f0f \u3002\n\u5b98\u7f51\n\n\nuniout\uff1a\u6253\u5370\u53ef\u8bfb\u7684\u5b57\u7b26\uff0c\u800c\u4e0d\u662f\u8f6c\u4e49\u7684\u5b57\u7b26\u4e32\u3002\n\u5b98\u7f51\n\n\nxpinyin\uff1a\u4e00\u4e2a\u7528\u4e8e\u628a\u6c49\u5b57\u8f6c\u6362\u4e3a\u62fc\u97f3\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nyfiglet-figlet\uff1a\npyfiglet -figlet\n \u7684 Python \u5b9e\u73b0\u3002\n\n\nflashtext: \u4e00\u4e2a\u9ad8\u6548\u7684\u6587\u672c\u67e5\u627e\u66ff\u6362\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nSlug \u5316\n\n\nawesome-slugify\uff1a\u4e00\u4e2a Python slug \u5316\u5e93\uff0c\u53ef\u4ee5\u4fdd\u6301 Unicode\u3002\n\u5b98\u7f51\n\n\npython-slugify\uff1aPython slug \u5316\u5e93\uff0c\u53ef\u4ee5\u628a unicode \u8f6c\u5316\u4e3a ASCII\u3002\n\u5b98\u7f51\n\n\nunicode-slugify\uff1a\u4e00\u4e2a slug \u5de5\u5177\uff0c\u53ef\u4ee5\u751f\u6210 unicode slugs ,\u9700\u8981\u4f9d\u8d56 Django \u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u89e3\u6790\u5668\n\n\nphonenumbers\uff1a\u89e3\u6790\uff0c\u683c\u5f0f\u5316\uff0c\u50a8\u5b58\uff0c\u9a8c\u8bc1\u7535\u8bdd\u53f7\u7801\u3002\n\u5b98\u7f51\n\n\nPLY\uff1alex \u548c yacc \u89e3\u6790\u5de5\u5177\u7684 Python \u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nPygments\uff1a\u901a\u7528\u8bed\u6cd5\u9ad8\u4eae\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyparsing\uff1a\u751f\u6210\u901a\u7528\u89e3\u6790\u5668\u7684\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\npython-nameparser\uff1a\u628a\u4e00\u4e2a\u4eba\u540d\u5206\u89e3\u4e3a\u51e0\u4e2a\u72ec\u7acb\u7684\u90e8\u5206\u3002\n\u5b98\u7f51\n\n\npython-user-agents\uff1a\u6d4f\u89c8\u5668 user agent \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nsqlparse\uff1a\u4e00\u4e2a\u65e0\u9a8c\u8bc1\u7684 SQL \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u7279\u6b8a\u6587\u672c\u683c\u5f0f\u5904\u7406\n\n\n\u4e00\u4e9b\u7528\u6765\u89e3\u6790\u548c\u64cd\u4f5c\u7279\u6b8a\u6587\u672c\u683c\u5f0f\u7684\u5e93\u3002\n\n\n\n\n\u901a\u7528\n\n\ntablib\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u4e2d\u8868\u683c\u6570\u636e\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nOffice\n\n\nMarmir\uff1a\u628a\u8f93\u5165\u7684 Python \u6570\u636e\u7ed3\u6784\u8f6c\u6362\u4e3a\u7535\u5b50\u8868\u5355\u3002\n\u5b98\u7f51\n\n\nopenpyxl\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u5199 Excel 2010 xlsx/xlsm/xltx/xltm \u6587\u4ef6\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\npyexcel\uff1a\u4e00\u4e2a\u63d0\u4f9b\u7edf\u4e00 API\uff0c\u7528\u6765\u8bfb\u5199\uff0c\u64cd\u4f5c Excel \u6587\u4ef6\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\npython-docx\uff1a\u8bfb\u53d6\uff0c\u67e5\u8be2\u4ee5\u53ca\u4fee\u6539 Microsoft Word 2007/2008 docx \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nrelatorio\uff1a\u6a21\u677f\u5316 OpenDocument \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nunoconv\uff1a\u5728 LibreOffice/OpenOffice \u652f\u6301\u7684\u4efb\u610f\u6587\u4ef6\u683c\u5f0f\u4e4b\u95f4\u8fdb\u884c\u8f6c\u6362\u3002\n\u5b98\u7f51\n\n\nXlsxWriter\uff1a\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa Excel .xlsx \u6587\u4ef6\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nxlwings\uff1a\u4e00\u4e2a\u4f7f\u5f97\u5728 Excel \u4e2d\u65b9\u4fbf\u8c03\u7528 Python \u7684\u5e93\uff08\u53cd\u4e4b\u4ea6\u7136\uff09\uff0c\u57fa\u4e8e BSD \u534f\u8bae\u3002\n\u5b98\u7f51\n\n\nxlwt\n\uff1a\u8bfb\u5199 Excel \u6587\u4ef6\u7684\u6570\u636e\u548c\u683c\u5f0f\u4fe1\u606f\u3002\n\u5b98\u7f51\n / \nxlrd\n\n\n\n\n\n\nPDF\n\n\nPDFMiner\uff1a\u4e00\u4e2a\u7528\u4e8e\u4ece PDF \u6587\u6863\u4e2d\u62bd\u53d6\u4fe1\u606f\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPyPDF2\uff1a\u4e00\u4e2a\u53ef\u4ee5\u5206\u5272\uff0c\u5408\u5e76\u548c\u8f6c\u6362 PDF \u9875\u9762\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nReportLab\uff1a\u5feb\u901f\u521b\u5efa\u5bcc\u6587\u672c PDF \u6587\u6863\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nMarkdown\n\n\nMistune\uff1a\u5feb\u901f\u5e76\u4e14\u529f\u80fd\u9f50\u5168\u7684\u7eaf Python \u5b9e\u73b0\u7684 Markdown \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nPython-Markdown\uff1aJohn Gruber\u2019s Markdown \u7684 Python \u7248\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nPython-Markdown2\uff1a\u7eaf Python \u5b9e\u73b0\u7684 Markdown \u89e3\u6790\u5668\uff0c\u6bd4 Python-Markdown \u66f4\u5feb\uff0c\u66f4\u51c6\u786e\uff0c\u53ef\u6269\u5c55\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nYAML\n\n\nPyYAML\uff1aPython \u7248\u672c\u7684 YAML \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nCSV\n\n\ncsvkit\uff1a\u7528\u4e8e\u8f6c\u6362\u548c\u64cd\u4f5c CSV \u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nArchive\n\n\nunp\uff1a\u4e00\u4e2a\u7528\u6765\u65b9\u4fbf\u89e3\u5305\u5f52\u6863\u6587\u4ef6\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u81ea\u7136\u8bed\u8a00\u5904\u7406\n\n\n\u7528\u6765\u5904\u7406\u4eba\u7c7b\u8bed\u8a00\u7684\u5e93\u3002\n\n\n\n\nNLTK\n\uff1a\u4e00\u4e2a\u5148\u8fdb\u7684\u5e73\u53f0\uff0c\u7528\u4ee5\u6784\u5efa\u5904\u7406\u4eba\u7c7b\u8bed\u8a00\u6570\u636e\u7684 Python \u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\njieba\uff1a\u4e2d\u6587\u5206\u8bcd\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nlangid.py\uff1a\u72ec\u7acb\u7684\u8bed\u8a00\u8bc6\u522b\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nPattern\uff1aPython \u7f51\u7edc\u4fe1\u606f\u6316\u6398\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nSnowNLP\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u4e2d\u6587\u6587\u672c\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nTextBlob\uff1a\u4e3a\u8fdb\u884c\u666e\u901a\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4efb\u52a1\u63d0\u4f9b\u4e00\u81f4\u7684 API\u3002\n\u5b98\u7f51\n\n\nTextGrocery\uff1a\u4e00\u7b80\u5355\u9ad8\u6548\u7684\u77ed\u6587\u672c\u5206\u7c7b\u5de5\u5177\uff0c\u57fa\u4e8e LibLinear \u548c Jieba\u3002\n\u5b98\u7f51\n\n\nthulac:\u6e05\u534e\u5927\u5b66\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4e0e\u793e\u4f1a\u4eba\u6587\u8ba1\u7b97\u5b9e\u9a8c\u5ba4\u7814\u5236\u63a8\u51fa\u7684\u4e00\u5957\u4e2d\u6587\u8bcd\u6cd5\u5206\u6790\u5de5\u5177\u5305\n\u5b98\u7f51\n\n\n\n\n\u6587\u6863\n\n\n\u7528\u4ee5\u751f\u6210\u9879\u76ee\u6587\u6863\u7684\u5e93\u3002\n\n\n\n\nSphinx\n\uff1aPython \u6587\u6863\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nawesome-sphinxdoc\uff1a\n\u5b98\u7f51\n\n\nMkDocs\uff1a\u5bf9 Markdown \u53cb\u597d\u7684\u6587\u6863\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\npdoc\uff1a\u4e00\u4e2a\u53ef\u4ee5\u66ff\u6362 Epydoc \u7684\u5e93\uff0c\u53ef\u4ee5\u81ea\u52a8\u751f\u6210 Python \u5e93\u7684 API \u6587\u6863\u3002\n\u5b98\u7f51\n\n\nPycco\uff1a\u6587\u5b66\u7f16\u7a0b\uff08literate-programming\uff09\u98ce\u683c\u7684\u6587\u6863\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nreadthedocs\uff1a\u4e00\u4e2a\u57fa\u4e8e Sphinx/MkDocs \u7684\u5728\u7ebf\u6587\u6863\u6258\u7ba1\u7cfb\u7edf\uff0c\u5bf9\u5f00\u6e90\u9879\u76ee\u514d\u8d39\u5f00\u653e\u4f7f\u7528\u3002\n\u5b98\u7f51\n\n\n\n\n\u914d\u7f6e\n\n\n\u7528\u6765\u4fdd\u5b58\u548c\u89e3\u6790\u914d\u7f6e\u7684\u5e93\u3002\n\n\n\n\nconfig\uff1a\nlogging\n \u6a21\u5757\u4f5c\u8005\u5199\u7684\u5206\u7ea7\u914d\u7f6e\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nConfigObj\uff1aINI \u6587\u4ef6\u89e3\u6790\u5668\uff0c\u5e26\u9a8c\u8bc1\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nConfigParser\uff1a(Python \u6807\u51c6\u5e93) INI \u6587\u4ef6\u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nprofig\uff1a\u901a\u8fc7\u591a\u79cd\u683c\u5f0f\u8fdb\u884c\u914d\u7f6e\uff0c\u5177\u6709\u6570\u503c\u8f6c\u6362\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\npython-decouple\uff1a\u5c06\u8bbe\u7f6e\u548c\u4ee3\u7801\u5b8c\u5168\u9694\u79bb\u3002\n\u5b98\u7f51\n\n\n\n\n\u547d\u4ee4\u884c\u5de5\u5177\n\n\n\u7528\u4e8e\u521b\u5efa\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u5e93\u3002\n\n\n\n\n\u547d\u4ee4\u884c\u7a0b\u5e8f\u5f00\u53d1\n\n\nasciimatics\uff1a\u8de8\u5e73\u53f0\uff0c\u5168\u5c4f\u7ec8\u7aef\u5305\uff08\u5373\u9f20\u6807/\u952e\u76d8\u8f93\u5165\u548c\u5f69\u8272\uff0c\u5b9a\u4f4d\u6587\u672c\u8f93\u51fa\uff09\uff0c\u5b8c\u6574\u7684\u590d\u6742\u52a8\u753b\u548c\u7279\u6b8a\u6548\u679c\u7684\u9ad8\u7ea7 API\u3002\n\u5b98\u7f51\n\n\ncement\uff1aPython \u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nclick\uff1a\u4e00\u4e2a\u901a\u8fc7\u7ec4\u5408\u7684\u65b9\u5f0f\u6765\u521b\u5efa\u7cbe\u7f8e\u547d\u4ee4\u884c\u754c\u9762\u7684\u5305\u3002\n\u5b98\u7f51\n\n\ncliff\uff1a\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u6846\u67b6\uff0c\u53ef\u4ee5\u521b\u5efa\u5177\u6709\u591a\u5c42\u547d\u4ee4\u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\nclint\uff1aPython \u547d\u4ee4\u884c\u7a0b\u5e8f\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ncolorama\uff1a\u8de8\u5e73\u53f0\u5f69\u8272\u7ec8\u7aef\u6587\u672c\u3002\n\u5b98\u7f51\n\n\ndocopt\uff1aPython \u98ce\u683c\u7684\u547d\u4ee4\u884c\u53c2\u6570\u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nGooey\uff1a\u4e00\u6761\u547d\u4ee4\uff0c\u5c06\u547d\u4ee4\u884c\u7a0b\u5e8f\u53d8\u6210\u4e00\u4e2a GUI \u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\npython-prompt-toolkit\uff1a\u4e00\u4e2a\u7528\u4e8e\u6784\u5efa\u5f3a\u5927\u7684\u4ea4\u4e92\u5f0f\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\npython-fire\uff1aGoogle \u51fa\u54c1\u7684\u4e00\u4e2a\u57fa\u4e8e Python \u7c7b\u7684\u6784\u5efa\u547d\u4ee4\u884c\u754c\u9762\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nPythonpy\n\uff1a\u5728\u547d\u4ee4\u884c\u4e2d\u76f4\u63a5\u6267\u884c\u4efb\u4f55 Python \u6307\u4ee4\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u751f\u4ea7\u529b\u5de5\u5177\n\n\naws-cli\uff1aAmazon Web Services \u7684\u901a\u7528\u547d\u4ee4\u884c\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nbashplotlib\uff1a\u5728\u7ec8\u7aef\u4e2d\u8fdb\u884c\u57fa\u672c\u7ed8\u56fe\u3002\n\u5b98\u7f51\n\n\ncaniusepython3\uff1a\u5224\u65ad\u662f\u54ea\u4e2a\u9879\u76ee\u59a8\u788d\u4f60\u4f60\u79fb\u690d\u5230 Python3\u3002\n\u5b98\u7f51\n\n\ncookiecutter\uff1a\u4ece cookiecutters\uff08\u9879\u76ee\u6a21\u677f\uff09\u521b\u5efa\u9879\u76ee\u7684\u4e00\u4e2a\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ndoitlive\uff1a\u4e00\u4e2a\u7528\u6765\u5728\u7ec8\u7aef\u4e2d\u8fdb\u884c\u73b0\u573a\u6f14\u793a\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyftpdlib\uff1a\u4e00\u4e2a\u901f\u5ea6\u6781\u5feb\u548c\u53ef\u6269\u5c55\u7684 Python FTP \u670d\u52a1\u5e93\u3002\n\u5b98\u7f51\n\n\nhowdoi\uff1a\u901a\u8fc7\u547d\u4ee4\u884c\u83b7\u53d6\u5373\u65f6\u7684\u7f16\u7a0b\u95ee\u9898\u89e3\u7b54\u3002\n\u5b98\u7f51\n\n\nhttpie\uff1a\u4e00\u4e2a\u547d\u4ee4\u884c HTTP \u5ba2\u6237\u7aef\uff0ccURL \u7684\u66ff\u4ee3\u54c1\uff0c\u6613\u7528\u6027\u66f4\u597d\u3002\n\u5b98\u7f51\n\n\nPathPicker\uff1a\u4ece bash \u8f93\u51fa\u4e2d\u9009\u51fa\u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\npercol\uff1a\u5411 UNIX shell \u4f20\u7edf\u7ba1\u9053\u6982\u5ff5\u4e2d\u52a0\u5165\u4ea4\u4e92\u5f0f\u9009\u62e9\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nSAWS\uff1a\u4e00\u4e2a\u52a0\u5f3a\u7248\u7684 AWS \u547d\u4ee4\u884c\u3002\n\u5b98\u7f51\n\n\nthefuck\uff1a\u4fee\u6b63\u4f60\u4e4b\u524d\u7684\u547d\u4ee4\u884c\u6307\u4ee4\u3002\n\u5b98\u7f51\n\n\nmycli\uff1a\u4e00\u4e2a MySQL \u547d\u4ee4\u884c\u5ba2\u6237\u7aef\uff0c\u5177\u6709\u81ea\u52a8\u8865\u5168\u548c\u8bed\u6cd5\u9ad8\u4eae\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\npgcli\uff1aPostgres \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u5177\u6709\u81ea\u52a8\u8865\u5168\u548c\u8bed\u6cd5\u9ad8\u4eae\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\ntry\uff1a\u4e00\u4e2a\u4ece\u6765\u6ca1\u6709\u66f4\u7b80\u5355\u7684\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u7528\u6765\u8bd5\u7528 python \u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u4e0b\u8f7d\u5668\n\n\n\u7528\u6765\u8fdb\u884c\u4e0b\u8f7d\u7684\u5e93.\n\n\n\n\ns3cmd\uff1a\u4e00\u4e2a\u7528\u6765\u7ba1\u7406 Amazon S3 \u548c CloudFront \u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ns4cmd\uff1a\u8d85\u7ea7 S3 \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u6027\u80fd\u66f4\u52a0\u5f3a\u52b2\u3002\n\u5b98\u7f51\n\n\nyou-get\uff1a\u4e00\u4e2a YouTube/Youku/Niconico \u89c6\u9891\u4e0b\u8f7d\u5668\uff0c\u4f7f\u7528 Python3 \u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nyoutube-dl\uff1a\u4e00\u4e2a\u5c0f\u5de7\u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\uff0c\u7528\u6765\u4e0b\u8f7d YouTube \u89c6\u9891\u3002\n\u5b98\u7f51\n\n\n\n\n\u56fe\u50cf\u5904\u7406\n\n\n\u7528\u6765\u64cd\u4f5c\u56fe\u50cf\u7684\u5e93.\n\n\n\n\npillow\n\uff1aPillow \u662f\u4e00\u4e2a\u66f4\u52a0\u6613\u7528\u7248\u7684 \nPIL\n\u3002\n\u5b98\u7f51\n\n\nhmap\uff1a\u56fe\u50cf\u76f4\u65b9\u56fe\u6620\u5c04\u3002\n\u5b98\u7f51\n\n\nimgSeek\uff1a\u4e00\u4e2a\u4f7f\u7528\u89c6\u89c9\u76f8\u4f3c\u6027\u641c\u7d22\u4e00\u7ec4\u56fe\u7247\u96c6\u5408\u7684\u9879\u76ee\u3002\n\u5b98\u7f51\n\n\nnude.py\uff1a\u88f8\u4f53\u68c0\u6d4b\u3002\n\u5b98\u7f51\n\n\npyBarcode\uff1a\u4e0d\u501f\u52a9 PIL \u5e93\u5728 Python \u7a0b\u5e8f\u4e2d\u751f\u6210\u6761\u5f62\u7801\u3002\n\u5b98\u7f51\n\n\npygram\uff1a\u7c7b\u4f3c Instagram \u7684\u56fe\u50cf\u6ee4\u955c\u3002\n\u5b98\u7f51\n\n\npython-qrcode\uff1a\u4e00\u4e2a\u7eaf Python \u5b9e\u73b0\u7684\u4e8c\u7ef4\u7801\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nQuads\uff1a\u57fa\u4e8e\u56db\u53c9\u6811\u7684\u8ba1\u7b97\u673a\u827a\u672f\u3002\n\u5b98\u7f51\n\n\nscikit-image\uff1a\u4e00\u4e2a\u7528\u4e8e\uff08\u79d1\u5b66\uff09\u56fe\u50cf\u5904\u7406\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nthumbor\uff1a\u4e00\u4e2a\u5c0f\u578b\u56fe\u50cf\u670d\u52a1\uff0c\u5177\u6709\u526a\u88c1\uff0c\u5c3a\u5bf8\u91cd\u8bbe\u548c\u7ffb\u8f6c\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nwand\uff1a\nMagickWand\n\u7684 Python \u7ed1\u5b9a\u3002MagickWand \u662f ImageMagick \u7684 C API \u3002\n\u5b98\u7f51\n\n\nface_recognition\uff1a\u7b80\u5355\u6613\u7528\u7684 python \u4eba\u8138\u8bc6\u522b\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nOCR\n\n\n\u5149\u5b66\u5b57\u7b26\u8bc6\u522b\u5e93\u3002\n\n\n\n\npyocr\uff1aTesseract \u548c Cuneiform \u7684\u4e00\u4e2a\u5c01\u88c5(wrapper)\u3002\n\u5b98\u7f51\n\n\npytesseract\n\uff1a\nGoogle Tesseract OCR\n \u7684\u53e6\u4e00\u4e2a\u5c01\u88c5(wrapper)\u3002\n\u5b98\u7f51\n\n\npython-tesseract\uff1a\nGoogle Tesseract OCR\n\u00a0\u7684\u4e00\u4e2a\u5305\u88c5\u7c7b\u3002\n\n\n\n\n\u97f3\u9891\n\n\n\u7528\u6765\u64cd\u4f5c\u97f3\u9891\u7684\u5e93\n\n\n\n\naudiolazy\uff1aPython \u7684\u6570\u5b57\u4fe1\u53f7\u5904\u7406\u5305\u3002\n\u5b98\u7f51\n \n\n\naudioread\uff1a\u4ea4\u53c9\u5e93 (GStreamer + Core Audio + MAD + FFmpeg) \u97f3\u9891\u89e3\u7801\u3002\n\u5b98\u7f51\n\n\nbeets\uff1a\u4e00\u4e2a\u97f3\u4e50\u5e93\u7ba1\u7406\u5de5\u5177\u53ca \nMusicBrainz\n \u6807\u7b7e\u6dfb\u52a0\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ndejavu\uff1a\u97f3\u9891\u6307\u7eb9\u63d0\u53d6\u548c\u8bc6\u522b\u3002\n\u5b98\u7f51\n\n\ndjango-elastic-transcoder\n\uff1aDjango + \nAmazon Elastic Transcoder\n\u3002\n\u5b98\u7f51\n\n\neyeD3\uff1a\u4e00\u4e2a\u7528\u6765\u64cd\u4f5c\u97f3\u9891\u6587\u4ef6\u7684\u5de5\u5177\uff0c\u5177\u4f53\u6765\u8bb2\u5c31\u662f\u5305\u542b ID3 \u5143\u4fe1\u606f\u7684 MP3 \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nid3reader\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u53d6 MP3 \u5143\u6570\u636e\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nm3u8\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790 m3u8 \u6587\u4ef6\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nmutagen\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u97f3\u9891\u5143\u6570\u636e\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npydub\uff1a\u901a\u8fc7\u7b80\u5355\u3001\u7b80\u6d01\u7684\u9ad8\u5c42\u63a5\u53e3\u6765\u64cd\u4f5c\u97f3\u9891\u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\npyechonest\uff1a\nEcho Nest\n API \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ntalkbox\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u6f14\u8bb2/\u4fe1\u53f7\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nTimeSide\uff1a\u5f00\u6e90 web \u97f3\u9891\u5904\u7406\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ntinytag\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u53d6 MP3, OGG, FLAC \u4ee5\u53ca Wave \u6587\u4ef6\u97f3\u4e50\u5143\u6570\u636e\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nmingus\uff1a\u4e00\u4e2a\u9ad8\u7ea7\u97f3\u4e50\u7406\u8bba\u548c\u66f2\u8c31\u5305\uff0c\u652f\u6301 MIDI \u6587\u4ef6\u548c\u56de\u653e\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\n\n\nVideo\n\n\n\u7528\u6765\u64cd\u4f5c\u89c6\u9891\u548c GIF \u7684\u5e93\u3002\n\n\n\n\nmoviepy\uff1a\u4e00\u4e2a\u7528\u6765\u8fdb\u884c\u57fa\u4e8e\u811a\u672c\u7684\u89c6\u9891\u7f16\u8f91\u6a21\u5757\uff0c\u9002\u7528\u4e8e\u591a\u79cd\u683c\u5f0f\uff0c\u5305\u62ec\u52a8\u56fe GIFs\u3002\n\u5b98\u7f51\n\n\nscikit-video\uff1aSciPy \u89c6\u9891\u5904\u7406\u5e38\u7528\u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\n\n\n\u5730\u7406\u4f4d\u7f6e\n\n\n\u5730\u7406\u7f16\u7801\u5730\u5740\u4ee5\u53ca\u7528\u6765\u5904\u7406\u7ecf\u7eac\u5ea6\u7684\u5e93\u3002\n\n\n\n\nGeoDjango\uff1a\u4e16\u754c\u7ea7\u5730\u7406\u56fe\u5f62 web \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nGeoIP\uff1aMaxMind GeoIP Legacy \u6570\u636e\u5e93\u7684 Python API\u3002\n\u5b98\u7f51\n\n\ngeojson\uff1aGeoJSON \u7684 Python \u7ed1\u5b9a\u53ca\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngeopy\uff1aPython \u5730\u5740\u7f16\u7801\u5de5\u5177\u7bb1\u3002\n\u5b98\u7f51\n\n\npygeoip\uff1a\u7eaf Python GeoIP API\u3002\n\u5b98\u7f51\n\n\ndjango-countries\uff1a\u4e00\u4e2a Django \u5e94\u7528\u7a0b\u5e8f\uff0c\u63d0\u4f9b\u7528\u4e8e\u8868\u683c\u7684\u56fd\u5bb6\u9009\u62e9\u529f\u80fd\uff0c\u56fd\u65d7\u56fe\u6807\u9759\u6001\u6587\u4ef6\u4ee5\u53ca\u6a21\u578b\u4e2d\u7684\u56fd\u5bb6\u5b57\u6bb5\u3002\n\u5b98\u7f51\n\n\n\n\nHTTP\n\n\n\u4f7f\u7528 HTTP \u7684\u5e93\u3002\n\n aiohttp\uff1a\u57fa\u4e8e asyncio \u7684\u5f02\u6b65 HTTP \u7f51\u7edc\u5e93\u3002\n\u5b98\u7f51\n\n\n requests\uff1a\u4eba\u6027\u5316\u7684 HTTP \u8bf7\u6c42\u5e93\u3002\n\u5b98\u7f51\n\n\n grequests\uff1arequests \u5e93 + gevent \uff0c\u7528\u4e8e\u5f02\u6b65 HTTP \u8bf7\u6c42.\n\u5b98\u7f51\n\n\n httplib2\uff1a\u5168\u9762\u7684 HTTP \u5ba2\u6237\u7aef\u5e93\u3002\n\u5b98\u7f51\n\n\n treq\uff1a\u7c7b\u4f3c requests \u7684 Python API \u6784\u5efa\u4e8e Twisted HTTP \u5ba2\u6237\u7aef\u4e4b\u4e0a\u3002\n\u5b98\u7f51\n\n\n urllib3\uff1a\u4e00\u4e2a\u5177\u6709\u7ebf\u7a0b\u5b89\u5168\u8fde\u63a5\u6c60\uff0c\u652f\u6301\u6587\u4ef6 post\uff0c\u6e05\u6670\u53cb\u597d\u7684 HTTP \u5e93\u3002\n\u5b98\u7f51\n\n\n\u6570\u636e\u5e93\n\n\nPython \u5b9e\u73b0\u7684\u6570\u636e\u5e93\u3002\n\n\n\n\npickleDB\uff1a\u4e00\u4e2a\u7b80\u5355\uff0c\u8f7b\u91cf\u7ea7\u952e\u503c\u50a8\u5b58\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\nPipelineDB\uff1a\u6d41\u5f0f SQL \u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\nTinyDB\uff1a\u4e00\u4e2a\u5fae\u578b\u7684\uff0c\u9762\u5411\u6587\u6863\u578b\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\nZODB\uff1a\u4e00\u4e2a Python \u539f\u751f\u5bf9\u8c61\u6570\u636e\u5e93\u3002\u4e00\u4e2a\u952e\u503c\u548c\u5bf9\u8c61\u56fe\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\u6570\u636e\u5e93\u9a71\u52a8\n\n\n\u7528\u6765\u8fde\u63a5\u548c\u64cd\u4f5c\u6570\u636e\u5e93\u7684\u5e93\u3002\n\n\n\n\nMySQL\uff1a\nawesome-mysql\n \u7cfb\u5217\n\n\naiomysql\uff1a\u57fa\u4e8e asyncio \u7684\u5f02\u6b65 MySQL \u6570\u636e\u5e93\u64cd\u4f5c\u5e93\u3002\n\u5b98\u7f51\n\n\nmysql-python\uff1aPython \u7684 MySQL \u6570\u636e\u5e93\u8fde\u63a5\u5668\u3002\n\u5b98\u7f51\n\n\nysqlclient\uff1a\nmysql-python\n \u5206\u652f\uff0c\u652f\u6301 Python 3\u3002\n\n\noursql\uff1a\u4e00\u4e2a\u66f4\u597d\u7684 MySQL \u8fde\u63a5\u5668\uff0c\u652f\u6301\u539f\u751f\u9884\u7f16\u8bd1\u6307\u4ee4\u548c BLOBs\u3002\n\u5b98\u7f51\n\n\nPyMySQL\uff1a\u7eaf Python MySQL \u9a71\u52a8\uff0c\u517c\u5bb9 mysql-python\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nPostgreSQL\n\n\npsycopg2\uff1aPython \u4e2d\u6700\u6d41\u884c\u7684 PostgreSQL \u9002\u914d\u5668\u3002\n\u5b98\u7f51\n\n\nqueries\uff1apsycopg2 \u5e93\u7684\u5c01\u88c5\uff0c\u7528\u6765\u548c PostgreSQL \u8fdb\u884c\u4ea4\u4e92\u3002\n\u5b98\u7f51\n\n\ntxpostgres\uff1a\u57fa\u4e8e Twisted \u7684\u5f02\u6b65 PostgreSQL \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\u5173\u7cfb\u578b\u6570\u636e\u5e93\n\n\napsw\uff1a\u53e6\u4e00\u4e2a Python SQLite \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\ndataset\uff1a\u5728\u6570\u636e\u5e93\u4e2d\u5b58\u50a8 Python \u5b57\u5178\n\n\npymssql\uff1a\u4e00\u4e2a\u7b80\u5355\u7684 Microsoft SQL Server \u6570\u636e\u5e93\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nNoSQL \u6570\u636e\u5e93\n\n\nasyncio-redis\uff1a\u57fa\u4e8e asyncio \u7684 redis \u5ba2\u6237\u7aef (PEP 3156)\u3002\n\u5b98\u7f51\n\n\ncassandra-python-driver\uff1aCassandra \u7684 Python \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\nHappyBase\uff1a\u4e00\u4e2a\u4e3a Apache HBase \u8bbe\u8ba1\u7684\uff0c\u5bf9\u5f00\u53d1\u8005\u53cb\u597d\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nPlyvel\uff1a\u4e00\u4e2a\u5feb\u901f\u4e14\u529f\u80fd\u4e30\u5bcc\u7684 LevelDB \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\npy2neo\uff1aNeo4j restful \u63a5\u53e3\u7684 Python \u5c01\u88c5\u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\npycassa\uff1aCassandra \u7684 Python Thrift \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\nPyMongo\uff1aMongoDB \u7684\u5b98\u65b9 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nredis-py\uff1aRedis \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ntelephus\uff1a\u57fa\u4e8e Twisted \u7684 Cassandra \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ntxRedis\uff1a\u57fa\u4e8e Twisted \u7684 Redis \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\nORM\n\n\n\u5b9e\u73b0\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\u6216\u6570\u636e\u6620\u5c04\u6280\u672f\u7684\u5e93\u3002\n\n\n\n\n\u5173\u7cfb\u578b\u6570\u636e\u5e93\n\n\nDjango Models\uff1aDjango \u7684\u4e00\u90e8\u5206\u3002\n\u5b98\u7f51\n\n\nSQLAlchemy\uff1aPython SQL \u5de5\u5177\u4ee5\u53ca\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nawesome-sqlalchemy\n \u7cfb\u5217\n\n\n\n\n\n\nPeewee\n\uff1a\u4e00\u4e2a\u5c0f\u5de7\uff0c\u5bcc\u6709\u8868\u8fbe\u529b\u7684 ORM\u3002\n\u5b98\u7f51\n\n\nPonyORM\uff1a\u63d0\u4f9b\u9762\u5411\u751f\u6210\u5668\u7684 SQL \u63a5\u53e3\u7684 ORM\u3002\n\u5b98\u7f51\n\n\npython-sql\uff1a\u7f16\u5199 Python \u98ce\u683c\u7684 SQL \u67e5\u8be2\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nNoSQL \u6570\u636e\u5e93\n\n\ndjango-mongodb-engine\uff1aDjango MongoDB \u540e\u7aef\u3002\n\u5b98\u7f51\n\n\nPynamoDB\uff1a\nAmazon DynamoDB\n \u7684\u4e00\u4e2a Python \u98ce\u683c\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nflywheel\uff1aAmazon DynamoDB \u7684\u5bf9\u8c61\u6620\u5c04\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nMongoEngine\uff1a\u4e00\u4e2a Python \u5bf9\u8c61\u6587\u6863\u6620\u5c04\u5de5\u5177\uff0c\u7528\u4e8e MongoDB\u3002\n\u5b98\u7f51\n\n\nhot-redis\uff1a\u4e3a Redis \u63d0\u4f9b Python \u4e30\u5bcc\u7684\u6570\u636e\u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\nredisco\uff1a\u4e00\u4e2a Python \u5e93\uff0c\u63d0\u4f9b\u53ef\u4ee5\u6301\u7eed\u5b58\u5728\u5728 Redis \u4e2d\u7684\u7b80\u5355\u6a21\u578b\u548c\u5bb9\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\n\n\nbutterdb\uff1aGoogle Drive \u7535\u5b50\u8868\u683c\u7684 Python ORM\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\nWeb \u6846\u67b6\n\n\n\u5168\u6808 Web \u6846\u67b6\u3002\n\n\n\n\nDjango\n\uff1aPython \u754c\u6700\u6d41\u884c\u7684 web \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nawesome-django\n \u7cfb\u5217\n\n\n\n\n\n\nFlask\n\uff1a\u4e00\u4e2a Python \u5fae\u578b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nawesome-flask\n \u7cfb\u5217\n\n\n\n\n\n\npyramid\uff1a\u4e00\u4e2a\u5c0f\u5de7\uff0c\u5feb\u901f\uff0c\u63a5\u5730\u6c14\u7684\u5f00\u6e90 Python web \u6846\u67b6\u3002\n\n\nawesome-pyramid\n \u7cfb\u5217\n\n\n\n\n\n\nBottle\n\uff1a\u4e00\u4e2a\u5feb\u901f\u5c0f\u5de7\uff0c\u8f7b\u91cf\u7ea7\u7684 WSGI \u5fae\u578b web \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nCherryPy\uff1a\u4e00\u4e2a\u6781\u7b80\u7684 Python web \u6846\u67b6\uff0c\u670d\u4ece HTTP/1.1 \u534f\u8bae\u4e14\u5177\u6709 WSGI \u7ebf\u7a0b\u6c60\u3002\n\u5b98\u7f51\n\n\nTurboGears\uff1a\u4e00\u4e2a\u53ef\u4ee5\u6269\u5c55\u4e3a\u5168\u6808\u89e3\u51b3\u65b9\u6848\u7684\u5fae\u578b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nweb.py\n\uff1a\u4e00\u4e2a Python \u7684 web \u6846\u67b6\uff0c\u65e2\u7b80\u5355\uff0c\u53c8\u5f3a\u5927\u3002\n\u5b98\u7f51\n\n\nweb2py\uff1a\u4e00\u4e2a\u5168\u6808 web \u6846\u67b6\u548c\u5e73\u53f0\uff0c\u4e13\u6ce8\u4e8e\u7b80\u5355\u6613\u7528\u3002\n\u5b98\u7f51\n\n\nTornado\n\uff1a\u4e00\u4e2a web \u6846\u67b6\u548c\u5f02\u6b65\u7f51\u7edc\u5e93\u3002\n\u5b98\u7f51\n\n\nsanic\uff1a\u57fa\u4e8e Python3.5+ \u7684\u5f02\u6b65\u7f51\u7edc\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u6743\u9650\n\n\n\u5141\u8bb8\u6216\u62d2\u7edd\u7528\u6237\u8bbf\u95ee\u6570\u636e\u6216\u529f\u80fd\u7684\u5e93\u3002\n\n\n\n\nCarteblanche\uff1a\u7ad9\u5728\u7528\u6237\u548c\u8bbe\u8ba1\u8005\u89d2\u5ea6\u5f00\u53d1\u7684\u4e00\u4e2a\u4ee3\u7801\u5bf9\u9f50\u6a21\u5757\uff0c\u5f88\u597d\u5730\u5904\u7406\u4e86\u4ee3\u7801\u5bfc\u822a\u53ca\u6743\u9650\u3002\n\u5b98\u7f51\n\n\ndjango-guardian\uff1aDjango 1.2+ \u5b9e\u73b0\u4e86\u5355\u4e2a\u5bf9\u8c61\u6743\u9650\u3002\n\u5b98\u7f51\n\n\ndjango-rules\uff1a\u4e00\u4e2a\u5c0f\u5de7\u4f46\u662f\u5f3a\u5927\u7684\u5e94\u7528\uff0c\u63d0\u4f9b\u5bf9\u8c61\u7ea7\u522b\u7684\u6743\u9650\u7ba1\u7406\uff0c\u4e14\u4e0d\u9700\u8981\u4f7f\u7528\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nCMS\n\n\n\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\n\n\n\n\nodoo-cms: \u4e00\u4e2a\u5f00\u6e90\u7684\uff0c\u4f01\u4e1a\u7ea7 CMS\uff0c\u57fa\u4e8e odoo\u3002\n\u5b98\u7f51\n\n\ndjango-cms\uff1a\u4e00\u4e2a\u5f00\u6e90\u7684\uff0c\u4f01\u4e1a\u7ea7 CMS\uff0c\u57fa\u4e8e Django\u3002\n\u5b98\u7f51\n\n\ndjedi-cms\uff1a\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u4f46\u5374\u975e\u5e38\u5f3a\u5927\u7684 Django CMS \uff0c\u8003\u8651\u5230\u4e86\u63d2\u4ef6\uff0c\u5185\u8054\u7f16\u8f91\u4ee5\u53ca\u6027\u80fd\u3002\n\u5b98\u7f51\n\n\nFeinCMS\uff1a\u57fa\u4e8e Django \u6784\u5efa\u7684\u6700\u5148\u8fdb\u7684\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\u4e4b\u4e00\u3002\n\u5b98\u7f51\n\n\nKotti\uff1a\u4e00\u4e2a\u9ad8\u7ea7\u7684\uff0cPython \u8303\u7684 web \u5e94\u7528\u6846\u67b6\uff0c\u57fa\u4e8e Pyramid \u6784\u5efa\u3002\n\u5b98\u7f51\n\n\nMezzanine\uff1a\u4e00\u4e2a\u5f3a\u5927\u7684\uff0c\u6301\u7eed\u7684\uff0c\u7075\u6d3b\u7684\u5185\u5bb9\u7ba1\u7406\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nOpps\uff1a\u4e00\u4e2a\u4e3a\u6742\u5fd7\uff0c\u62a5\u7eb8\u7f51\u7ad9\u4ee5\u53ca\u5927\u6d41\u91cf\u95e8\u6237\u7f51\u7ad9\u8bbe\u8ba1\u7684 CMS \u5e73\u53f0\uff0c\u57fa\u4e8e Django\u3002\n\u5b98\u7f51\n\n\nPlone\uff1a\u4e00\u4e2a\u6784\u5efa\u4e8e\u5f00\u6e90\u5e94\u7528\u670d\u52a1\u5668 Zope \u4e4b\u4e0a\u7684 CMS\u3002\n\u5b98\u7f51\n\n\nQuokka\uff1a\u7075\u6d3b\uff0c\u53ef\u6269\u5c55\u7684\u5c0f\u578b CMS\uff0c\u57fa\u4e8e Flask \u548c MongoDB\u3002\n\u5b98\u7f51\n\n\nWagtail\n\uff1a\u4e00\u4e2a Django \u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nWidgy\uff1a\u6700\u65b0\u7684 CMS \u6846\u67b6\uff0c\u57fa\u4e8e Django\u3002\n\u5b98\u7f51\n\n\n\n\n\u7535\u5b50\u5546\u52a1\n\n\n\u7528\u4e8e\u7535\u5b50\u5546\u52a1\u4ee5\u53ca\u652f\u4ed8\u7684\u6846\u67b6\u548c\u5e93\u3002\n\n\n\n\ndjango-oscar\uff1a\u4e00\u4e2a\u7528\u4e8e Django \u7684\u5f00\u6e90\u7684\u7535\u5b50\u5546\u52a1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ndjango-shop\uff1a\u4e00\u4e2a\u57fa\u4e8e Django \u7684\u5e97\u94fa\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nCartridge\uff1a\u4e00\u4e2a\u57fa\u4e8e Mezzanine \u6784\u5efa\u7684\u8d2d\u7269\u8f66\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nshoop\uff1a\u4e00\u4e2a\u57fa\u4e8e Django \u7684\u5f00\u6e90\u7535\u5b50\u5546\u52a1\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nalipay\uff1a\u975e\u5b98\u65b9\u7684 Python \u652f\u4ed8\u5b9d API\u3002\n\u5b98\u7f51\n\n\nmerchant\uff1a\u4e00\u4e2a\u53ef\u4ee5\u63a5\u6536\u6765\u81ea\u591a\u79cd\u652f\u4ed8\u5e73\u53f0\u652f\u4ed8\u7684 Django \u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nmoney\uff1a\u4e00\u4e2a\u8d27\u5e01\u7c7b\u5e93\u3002\u5e26\u6709\u53ef\u9009\u7684 CLDR \u540e\u7aef\u672c\u5730\u5316\u683c\u5f0f\uff0c\u63d0\u4f9b\u53ef\u6269\u5c55\u7684\u8d27\u5e01\u5151\u6362\u89e3\u51b3\u65b9\u6848\u3002\n\u5b98\u7f51\n\n\npython-currencies\uff1a\u663e\u793a\u8d27\u5e01\u683c\u5f0f\u4ee5\u53ca\u5b83\u7684\u6570\u503c\u3002\n\u5b98\u7f51\n\n\n\n\nRESTful API\n\n\n\u7528\u6765\u5f00\u53d1 RESTful APIs \u7684\u5e93\n\n\n\n\nDjango\n\n\ndjango-rest-framework\n\uff1a\u4e00\u4e2a\u5f3a\u5927\u7075\u6d3b\u7684\u5de5\u5177\uff0c\u7528\u6765\u6784\u5efa web API\u3002\n\u5b98\u7f51\n\n\ndjango-tastypie\uff1a\u4e3a Django \u5e94\u7528\u5f00\u53d1 API\u3002\n\u5b98\u7f51\n\n\ndjango-formapi\uff1a\u4e3a Django \u7684\u8868\u5355\u9a8c\u8bc1\uff0c\u521b\u5efa JSON APIs \u3002\n\u5b98\u7f51\n\n\n\n\n\n\nFlask\n\n\nflask-api\uff1a\u4e3a flask \u5f00\u53d1\u7684\uff0c\u53ef\u6d4f\u89c8 Web APIs \u3002\n\u5b98\u7f51\n\n\nflask-restful\uff1a\u4e3a flask \u5feb\u901f\u521b\u5efa REST APIs \u3002\n\u5b98\u7f51\n\n\nflask-restless\uff1a\u4e3a SQLAlchemy \u5b9a\u4e49\u7684\u6570\u636e\u5e93\u6a21\u578b\u521b\u5efa RESTful APIs \u3002\n\u5b98\u7f51\n\n\nflask-api-utils\uff1a\u4e3a Flask \u5904\u7406 API \u8868\u793a\u548c\u9a8c\u8bc1\u3002\n\u5b98\u7f51\n\n\neve\uff1aREST API \u6846\u67b6\uff0c\u7531 Flask, MongoDB \u7b49\u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nPyramid\n\n\ncornice\uff1a\u4e00\u4e2a Pyramid \u7684 REST \u6846\u67b6 \u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4e0e\u6846\u67b6\u65e0\u5173\u7684\n\n\nfalcon\uff1a\u4e00\u4e2a\u7528\u6765\u5efa\u7acb\u4e91 API \u548c web app \u540e\u7aef\u7684\u9ad8\u6027\u80fd\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nsandman\uff1a\u4e3a\u73b0\u5b58\u7684\u6570\u636e\u5e93\u9a71\u52a8\u7cfb\u7edf\u81ea\u52a8\u521b\u5efa REST APIs \u3002\n\u5b98\u7f51\n\n\nrestless\uff1a\u6846\u67b6\u65e0\u5173\u7684 REST \u6846\u67b6 \uff0c\u57fa\u4e8e\u4ece Tastypie \u5b66\u5230\u7684\u77e5\u8bc6\u3002\n\u5b98\u7f51\n\n\nripozo\uff1a\u5feb\u901f\u521b\u5efa REST/HATEOAS/Hypermedia APIs\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u9a8c\u8bc1\n\n\n\u5b9e\u73b0\u9a8c\u8bc1\u65b9\u6848\u7684\u5e93\u3002\n\n\n\n\nOAuth\n\n\nAuthomatic\uff1a\u7b80\u5355\u4f46\u662f\u5f3a\u5927\u7684\u6846\u67b6\uff0c\u8eab\u4efd\u9a8c\u8bc1/\u6388\u6743\u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ndjango-allauth\uff1aDjango \u7684\u9a8c\u8bc1\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\ndjango-oauth-toolkit\uff1a\u4e3a Django \u7528\u6237\u51c6\u5907\u7684 OAuth2\u3002\n\u5b98\u7f51\n\n\ndjango-oauth2-provider\uff1a\u4e3a Django \u5e94\u7528\u63d0\u4f9b OAuth2 \u63a5\u5165\u3002\n\u5b98\u7f51\n\n\nFlask-OAuthlib\uff1aOAuth 1.0/a, 2.0 \u5ba2\u6237\u7aef\u5b9e\u73b0\uff0c\u4f9b Flask \u4f7f\u7528\u3002\n\u5b98\u7f51\n\n\nOAuthLib\uff1a\u4e00\u4e2a OAuth \u8bf7\u6c42-\u7b7e\u540d\u903b\u8f91\u901a\u7528\u3001 \u5b8c\u6574\u7684\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\npython-oauth2\uff1a\u4e00\u4e2a\u5b8c\u5168\u6d4b\u8bd5\u7684\u62bd\u8c61\u63a5\u53e3\u3002\u7528\u6765\u521b\u5efa OAuth \u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u3002\n\u5b98\u7f51\n\n\npython-social-auth\uff1a\u4e00\u4e2a\u8bbe\u7f6e\u7b80\u5355\u7684\u793e\u4f1a\u5316\u9a8c\u8bc1\u65b9\u5f0f\u3002\n\u5b98\u7f51\n\n\nrauth\uff1aOAuth 1.0/a, 2.0, \u548c Ofly \u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nsanction\uff1a\u4e00\u4e2a\u8d85\u7ea7\u7b80\u5355\u7684 OAuth2 \u5ba2\u6237\u7aef\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\n\n\njose\uff1aJavaScript \u5bf9\u8c61\u7b7e\u540d\u548c\u52a0\u5bc6\u8349\u6848\u7684\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nPyJWT\uff1aJSON Web \u4ee4\u724c\u8349\u6848 01\u3002\n\u5b98\u7f51\n\n\npython-jws\uff1aJSON Web \u7b7e\u540d\u8349\u6848 02 \u7684\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\npython-jwt\uff1a\u4e00\u4e2a\u7528\u6765\u751f\u6210\u548c\u9a8c\u8bc1 JSON Web \u4ee4\u724c\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u6a21\u677f\u5f15\u64ce\n\n\n\u6a21\u677f\u751f\u6210\u548c\u8bcd\u6cd5\u89e3\u6790\u7684\u5e93\u548c\u5de5\u5177\u3002\n\n\n\n\nJinja2\n\uff1a\u4e00\u4e2a\u73b0\u4ee3\u7684\uff0c\u5bf9\u8bbe\u8ba1\u5e08\u53cb\u597d\u7684\u6a21\u677f\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\nChameleon\uff1a\u4e00\u4e2a HTML/XML \u6a21\u677f\u5f15\u64ce\u3002 \u6a21\u4eff\u4e86 ZPT\uff08Zope Page Templates\uff09, \u8fdb\u884c\u4e86\u901f\u5ea6\u4e0a\u7684\u4f18\u5316\u3002\n\u5b98\u7f51\n\n\nGenshi\uff1aPython \u6a21\u677f\u5de5\u5177\uff0c\u7528\u4ee5\u751f\u6210 web \u611f\u77e5\u7684\u7ed3\u679c\u3002\n\u5b98\u7f51\n\n\nMako\uff1aPython \u5e73\u53f0\u7684\u8d85\u9ad8\u901f\u8f7b\u91cf\u7ea7\u6a21\u677f\u3002\n\u5b98\u7f51\n\n\n\n\n\u961f\u5217\n\n\n\u5904\u7406\u4e8b\u4ef6\u4ee5\u53ca\u4efb\u52a1\u961f\u5217\u7684\u5e93\u3002\n\n\n\n\ncelery\uff1a\u4e00\u4e2a\u5f02\u6b65\u4efb\u52a1\u961f\u5217/\u4f5c\u4e1a\u961f\u5217\uff0c\u57fa\u4e8e\u5206\u5e03\u5f0f\u6d88\u606f\u4f20\u9012\u3002\n\u5b98\u7f51\n\n\nhuey\uff1a\u5c0f\u578b\u591a\u7ebf\u7a0b\u4efb\u52a1\u961f\u5217\u3002\n\u5b98\u7f51\n\n\nmrq\n\uff1aMr. Queue -\u4e00\u4e2a Python \u7684\u5206\u5e03\u5f0f worker \u4efb\u52a1\u961f\u5217\uff0c \u4f7f\u7528 Redis \u548c gevent\u3002\n\u5b98\u7f51\n\n\nrq\uff1a\u7b80\u5355\u7684 Python \u4f5c\u4e1a\u961f\u5217\u3002\n\u5b98\u7f51\n\n\nsimpleq\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0c\u53ef\u65e0\u9650\u6269\u5f20\u7684\uff0c\u57fa\u4e8e\u4e9a\u9a6c\u900a SQS \u7684\u961f\u5217\u3002\n\u5b98\u7f51\n\n\n\n\n\u641c\u7d22\n\n\n\u5bf9\u6570\u636e\u8fdb\u884c\u7d22\u5f15\u548c\u6267\u884c\u641c\u7d22\u67e5\u8be2\u7684\u5e93\u548c\u8f6f\u4ef6\u3002\n\n\n\n\ndjango-haystack\uff1aDjango \u6a21\u5757\u5316\u641c\u7d22\u3002\n\u5b98\u7f51\n\n\nelasticsearch-py\uff1aElasticsearch \u7684\u5b98\u65b9\u5e95\u5c42 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nelasticsearch-dsl-py\uff1aElasticsearch \u7684\u5b98\u65b9\u9ad8\u7ea7 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n \n\n\nsolrpy\uff1a\nsolr\n \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nWhoosh\uff1a\u4e00\u4e2a\u5feb\u901f\u7684\u7eaf Python \u641c\u7d22\u5f15\u64ce\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\u52a8\u6001\u6d88\u606f\n\n\n\u7528\u6765\u521b\u5efa\u7528\u6237\u6d3b\u52a8\u7684\u5e93\u3002\n\n\n\n\ndjango-activity-stream\uff1a\u4ece\u4f60\u7684\u7ad9\u70b9\u884c\u4e3a\u4e2d\u751f\u6210\u901a\u7528\u6d3b\u52a8\u4fe1\u606f\u6d41\u3002\n\u5b98\u7f51\n\n\nStream-Framework\uff1a\u4f7f\u7528 Cassandra \u548c Redis \u521b\u5efa\u52a8\u6001\u6d88\u606f\u548c\u901a\u77e5\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\n\n\n\u8d44\u6e90\u7ba1\u7406\n\n\n\u7ba1\u7406\u3001\u538b\u7f29\u3001\u7f29\u5c0f\u7f51\u7ad9\u8d44\u6e90\u7684\u5de5\u5177\u3002\n\n\n\n\ndjango-compressor\uff1a\u5c06\u94fe\u63a5\u548c\u5185\u8054\u7684 JavaScript \u6216 CSS \u538b\u7f29\u5230\u4e00\u4e2a\u5355\u72ec\u7684\u7f13\u5b58\u6587\u4ef6\u4e2d\u3002\n\u5b98\u7f51\n\n\ndjango-storages\uff1a\u4e00\u4e2a\u9488\u5bf9 Django \u7684\u81ea\u5b9a\u4e49\u5b58\u50a8\u540e\u7aef\u7684\u5de5\u5177\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nfanstatic\uff1a\u6253\u5305\u3001\u4f18\u5316\uff0c\u5e76\u4e14\u628a\u9759\u6001\u6587\u4ef6\u4f9d\u8d56\u4f5c\u4e3a Python \u7684\u5305\u6765\u63d0\u4f9b\u3002\n\u5b98\u7f51\n\n\nFile Conveyor\uff1a\u4e00\u4e2a\u540e\u53f0\u9a7b\u7559\u7684\u7a0b\u5e8f\uff0c\u7528\u6765\u53d1\u73b0\u548c\u540c\u6b65\u6587\u4ef6\u5230 CDNs, S3 \u548c FTP\u3002\n\u5b98\u7f51\n\n\nFlask-Assets\uff1a\u5e2e\u4f60\u5c06 web \u8d44\u6e90\u6574\u5408\u5230\u4f60\u7684 Flask app \u4e2d\u3002\n\u5b98\u7f51\n\n\njinja-assets-compressor\uff1a\u4e00\u4e2a Jinja \u6269\u5c55\uff0c\u7528\u6765\u7f16\u8bd1\u548c\u538b\u7f29\u4f60\u7684\u8d44\u6e90\u3002\n\u5b98\u7f51\n\n\nwebassets\uff1a\u4e3a\u4f60\u7684\u9759\u6001\u8d44\u6e90\u6253\u5305\u3001\u4f18\u5316\u548c\u7ba1\u7406\u751f\u6210\u72ec\u4e00\u65e0\u4e8c\u7684\u7f13\u5b58 URL\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f13\u5b58\n\n\n\u7f13\u5b58\u6570\u636e\u7684\u5e93\u3002\n\n\n\n\nBeaker\uff1a\u4e00\u4e2a\u7f13\u5b58\u548c\u4f1a\u8bdd\u5e93\uff0c\u53ef\u4ee5\u7528\u5728 web \u5e94\u7528\u548c\u72ec\u7acb Python \u811a\u672c\u548c\u5e94\u7528\u4e0a\u3002\n\u5b98\u7f51\n\n\ndjango-cache-machine\uff1aDjango \u6a21\u578b\u7684\u81ea\u52a8\u7f13\u5b58\u548c\u5931\u6548\u3002\n\u5b98\u7f51\n\n\ndjango-cacheops\uff1a\u5177\u6709\u81ea\u52a8\u9897\u7c92\u5316\u4e8b\u4ef6\u9a71\u52a8\u5931\u6548\u529f\u80fd\u7684 ORM\u3002\n\u5b98\u7f51\n\n\ndjango-viewlet\uff1a\u6e32\u67d3\u6a21\u677f\uff0c\u540c\u65f6\u5177\u6709\u989d\u5916\u7684\u7f13\u5b58\u63a7\u5236\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\ndogpile.cache\uff1adogpile.cache \u662f Beaker \u7684\u4e0b\u4e00\u4ee3\u66ff\u4ee3\u54c1\uff0c\u7531\u540c\u4e00\u4f5c\u8005\u5f00\u53d1\u3002\n\u5b98\u7f51\n\n\nHermesCache\uff1aPython \u7f13\u5b58\u5e93\uff0c\u5177\u6709\u57fa\u4e8e\u6807\u7b7e\u7684\u5931\u6548\u548c dogpile effect \u4fdd\u62a4\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\njohnny-cache\uff1adjango \u5e94\u7528\u7f13\u5b58\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\npylibmc\uff1a\nlibmemcached\n \u63a5\u53e3\u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\n\u7535\u5b50\u90ae\u4ef6\n\n\n\u7528\u6765\u53d1\u9001\u548c\u89e3\u6790\u7535\u5b50\u90ae\u4ef6\u7684\u5e93\u3002\n\n\n\n\ndjango-celery-ses\uff1a\u5e26\u6709 AWS SES \u548c Celery \u7684 Django email \u540e\u7aef\u3002\n\u5b98\u7f51\n\n\nenvelopes\uff1a\u4f9b\u4eba\u7c7b\u4f7f\u7528\u7684\u7535\u5b50\u90ae\u4ef6\u5e93\u3002\n\u5b98\u7f51\n\n\nflanker\uff1a\u4e00\u4e2a email \u5730\u5740\u548c Mime \u89e3\u6790\u5e93\u3002\n\u5b98\u7f51\n\n\nimbox\uff1aPython IMAP \u5e93\u3002\n\u5b98\u7f51\n\n\ninbox.py\uff1aPython SMTP \u670d\u52a1\u5668\u3002\n\u5b98\u7f51\n\n\ninbox\uff1a\u4e00\u4e2a\u5f00\u6e90\u7535\u5b50\u90ae\u4ef6\u5de5\u5177\u7bb1\u3002\n\u5b98\u7f51\n\n\nlamson\uff1aPython \u98ce\u683c\u7684 SMTP \u5e94\u7528\u670d\u52a1\u5668\u3002\n\u5b98\u7f51\n\n\nmailjet\uff1aMailjet API \u5b9e\u73b0\uff0c\u7528\u6765\u63d0\u4f9b\u6279\u91cf\u53d1\u9001\u90ae\u4ef6\uff0c\u7edf\u8ba1\u7b49\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nmarrow.mailer\uff1a\u9ad8\u6027\u80fd\u53ef\u6269\u5c55\u90ae\u4ef6\u5206\u53d1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nmodoboa\uff1a\u4e00\u4e2a\u90ae\u4ef6\u6258\u7ba1\u548c\u7ba1\u7406\u5e73\u53f0\uff0c\u5177\u6709\u73b0\u4ee3\u7684\u3001\u7b80\u7ea6\u7684 Web UI\u3002\n\u5b98\u7f51\n\n\npyzmail\uff1a\u521b\u5efa\uff0c\u53d1\u9001\u548c\u89e3\u6790\u7535\u5b50\u90ae\u4ef6\u3002\n\u5b98\u7f51\n\n\nTalon\uff1aMailgun \u5e93\uff0c\u7528\u6765\u62bd\u53d6\u4fe1\u606f\u548c\u7b7e\u540d\u3002\n\u5b98\u7f51\n\n\n\n\n\u56fd\u9645\u5316\n\n\n\u7528\u6765\u8fdb\u884c\u56fd\u9645\u5316\u7684\u5e93\u3002\n\n\n\n\nBabel\uff1a\u4e00\u4e2a Python \u7684\u56fd\u9645\u5316\u5e93\u3002\n\u5b98\u7f51\n\n\nKorean\uff1a\u4e00\u4e2a\u97e9\u8bed\u8bcd\u6001\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nURL \u5904\u7406\n\n\n\u89e3\u6790 URLs \u7684\u5e93\n\n\n\n\nfurl\uff1a\u4e00\u4e2a\u8ba9\u5904\u7406 URL \u66f4\u7b80\u5355\u5c0f\u578b Python \u5e93\u3002\n\u5b98\u7f51\n\n\npurl\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0c\u4e0d\u53ef\u53d8\u7684 URL \u7c7b\uff0c\u5177\u6709\u7b80\u6d01\u7684 API \u6765\u8fdb\u884c\u8be2\u95ee\u548c\u5904\u7406\u3002\n\u5b98\u7f51\n\n\npyshorteners\uff1a\u4e00\u4e2a\u7eaf Python URL \u7f29\u77ed\u5e93\u3002\n\u5b98\u7f51\n\n\nshorturl\uff1a\u751f\u6210\u77ed\u5c0f URL \u548c\u7c7b\u4f3c bit.ly \u77ed\u94fe\u7684 Python \u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nwebargs\uff1a\u4e00\u4e2a\u89e3\u6790 HTTP \u8bf7\u6c42\u53c2\u6570\u7684\u5e93\uff0c\u5185\u7f6e\u5bf9\u6d41\u884c web \u6846\u67b6\u7684\u652f\u6301\uff0c\u5305\u62ec Flask, Django, Bottle, Tornado \u548c Pyramid\u3002\n\u5b98\u7f51\n\n\n\n\nHTML \u5904\u7406\n\n\n\u5904\u7406 HTML \u548c XML \u7684\u5e93\u3002\n\n\n\n\nBeautifulSoup\uff1a\u4ee5 Python \u98ce\u683c\u7684\u65b9\u5f0f\u6765\u5bf9 HTML \u6216 XML \u8fdb\u884c\u8fed\u4ee3\uff0c\u641c\u7d22\u548c\u4fee\u6539\u3002\n\u5b98\u7f51\n\n\nbleach\uff1a\u4e00\u4e2a\u57fa\u4e8e\u767d\u540d\u5355\u7684 HTML \u6e05\u7406\u548c\u6587\u672c\u94fe\u63a5\u5e93\u3002\n\u5b98\u7f51\n\n\ncssutils\uff1a\u4e00\u4e2a Python \u7684 CSS \u5e93\u3002\n\u5b98\u7f51\n\n\nhtml5lib\uff1a\u4e00\u4e2a\u517c\u5bb9\u6807\u51c6\u7684 HTML \u6587\u6863\u548c\u7247\u6bb5\u89e3\u6790\u53ca\u5e8f\u5217\u5316\u5e93\u3002\n\u5b98\u7f51\n\n\nlxml\uff1a\u4e00\u4e2a\u975e\u5e38\u5feb\u901f\uff0c\u7b80\u5355\u6613\u7528\uff0c\u529f\u80fd\u9f50\u5168\u7684\u5e93\uff0c\u7528\u6765\u5904\u7406 HTML \u548c XML\u3002\n\u5b98\u7f51\n\n\nMarkupSafe\uff1a\u4e3a Python \u5b9e\u73b0 XML/HTML/XHTML \u6807\u8bb0\u5b89\u5168\u5b57\u7b26\u4e32\u3002\n\u5b98\u7f51\n\n\npyquery\uff1a\u4e00\u4e2a\u89e3\u6790 HTML \u7684\u5e93\uff0c\u7c7b\u4f3c jQuery\u3002\n\u5b98\u7f51\n\n\nrequests-html\uff1a\u4eba\u6027\u5316\u7684\uff0cPythonic \u7684 HTML \u89e3\u6790\u5e93\u3002\n\u5b98\u7f51\n\n\nuntangle\uff1a\u5c06 XML \u6587\u6863\u8f6c\u6362\u4e3a Python \u5bf9\u8c61\uff0c\u4f7f\u5176\u53ef\u4ee5\u65b9\u4fbf\u7684\u8bbf\u95ee\u3002\n\u5b98\u7f51\n\n\nxhtml2pdf\uff1aHTML/CSS \u8f6c PDF \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nxmltodict\uff1a\u50cf\u5904\u7406 JSON \u4e00\u6837\u5904\u7406 XML\u3002\n\u5b98\u7f51\n\n\n\n\n\u722c\u53d6\u7f51\u7edc\u7ad9\u70b9\u7684\u5e93\n\n\n\n\nScrapy\uff1a\u4e00\u4e2a\u5feb\u901f\u9ad8\u7ea7\u7684\u5c4f\u5e55\u722c\u53d6\u53ca\u7f51\u9875\u91c7\u96c6\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ncola\uff1a\u4e00\u4e2a\u5206\u5e03\u5f0f\u722c\u866b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nDemiurge\uff1a\u57fa\u4e8e PyQuery \u7684\u722c\u866b\u5fae\u578b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nfeedparser\uff1a\u901a\u7528 feed \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nGrab\uff1a\u7ad9\u70b9\u722c\u53d6\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nMechanicalSoup\uff1a\u7528\u4e8e\u81ea\u52a8\u548c\u7f51\u7edc\u7ad9\u70b9\u4ea4\u4e92\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nportia\uff1aScrapy \u53ef\u89c6\u5316\u722c\u53d6\u3002\n\u5b98\u7f51\n\n\npyspider\uff1a\u4e00\u4e2a\u5f3a\u5927\u7684\u722c\u866b\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nRoboBrowser\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0cPython \u98ce\u683c\u7684\u5e93\uff0c\u7528\u6765\u6d4f\u89c8\u7f51\u7ad9\uff0c\u800c\u4e0d\u9700\u8981\u4e00\u4e2a\u72ec\u7acb\u5b89\u88c5\u7684\u6d4f\u89c8\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\n\n\n\u7528\u4e8e\u8fdb\u884c\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\u7684\u5e93\u3002\n\n\n\n\nHaul\uff1a\u4e00\u4e2a\u53ef\u4ee5\u6269\u5c55\u7684\u56fe\u50cf\u722c\u53d6\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nhtml2text\uff1a\u5c06 HTML \u8f6c\u6362\u4e3a Markdown \u683c\u5f0f\u6587\u672c\u3002\n\u5b98\u7f51\n\n\nlassie\uff1a\u4eba\u6027\u5316\u7684\u7f51\u9875\u5185\u5bb9\u68c0\u7d22\u5e93\u3002\n\u5b98\u7f51\n\n\nmicawber\uff1a\u4e00\u4e2a\u5c0f\u578b\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\u5e93\uff0c\u7528\u6765\u4ece URLs \u63d0\u53d6\u5bcc\u5185\u5bb9\u3002\n\u5b98\u7f51\n \n\n\nnewspaper\n\uff1a\u4f7f\u7528 Python \u8fdb\u884c\u65b0\u95fb\u63d0\u53d6\uff0c\u6587\u7ae0\u63d0\u53d6\u4ee5\u53ca\u5185\u5bb9\u7b56\u5c55\u3002\n\u5b98\u7f51\n\n\nopengraph\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790\u5f00\u653e\u5185\u5bb9\u534f\u8bae(Open Graph Protocol)\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npython-goose\n\uff1aHTML \u5185\u5bb9/\u6587\u7ae0\u63d0\u53d6\u5668\u3002\n\u5b98\u7f51\n\n\npython-readability\uff1aarc90 \u516c\u53f8 readability \u5de5\u5177\u7684 Python \u9ad8\u901f\u7aef\u53e3\u3002\n\u5b98\u7f51\n\n\nsanitize\uff1a\u4e3a\u6742\u4e71\u7684\u6570\u636e\u4e16\u754c\u5e26\u6765\u8c03\u7406\u6027\u3002\n\u5b98\u7f51\n\n\nsumy\uff1a\u4e00\u4e2a\u4e3a\u6587\u672c\u6587\u4ef6\u548c HTML \u9875\u9762\u8fdb\u884c\u81ea\u52a8\u6458\u8981\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\ntextract\uff1a\u4ece\u4efb\u4f55\u683c\u5f0f\u7684\u6587\u6863\u4e2d\u63d0\u53d6\u6587\u672c\uff0cWord\uff0cPowerPoint\uff0cPDFs \u7b49\u7b49\u3002\n\u5b98\u7f51\n\n\n\n\n\u8868\u5355\n\n\n\u8fdb\u884c\u8868\u5355\u64cd\u4f5c\u7684\u5e93\u3002\n\n\n\n\nDeform\uff1aPython HTML \u8868\u5355\u751f\u6210\u5e93\uff0c\u53d7\u5230\u4e86 formish \u8868\u5355\u751f\u6210\u5e93\u7684\u542f\u53d1\u3002\n\u5b98\u7f51\n\n\ndjango-bootstrap3\uff1a\u96c6\u6210\u4e86 Bootstrap 3 \u7684 Django\u3002\n\u5b98\u7f51\n\n\ndjango-crispy-forms\uff1a\u4e00\u4e2a Django \u5e94\u7528\uff0c\u4ed6\u53ef\u4ee5\u8ba9\u4f60\u4ee5\u4e00\u79cd\u975e\u5e38\u4f18\u96c5\u4e14 DRY\uff08Don't repeat yourself\uff09 \u7684\u65b9\u5f0f\u6765\u521b\u5efa\u7f8e\u89c2\u7684\u8868\u5355\u3002\n\u5b98\u7f51\n\n\ndjango-remote-forms\uff1a\u4e00\u4e2a\u5e73\u53f0\u72ec\u7acb\u7684 Django \u8868\u5355\u5e8f\u5217\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nWTForms\uff1a\u4e00\u4e2a\u7075\u6d3b\u7684\u8868\u5355\u9a8c\u8bc1\u548c\u5448\u73b0\u5e93\u3002\n\u5b98\u7f51\n\n\nWTForms-JSON\uff1a\u4e00\u4e2a WTForms \u6269\u5c55\uff0c\u7528\u6765\u5904\u7406 JSON \u6570\u636e\u3002\n\u5b98\u7f51\n\n\n\n\n\u6570\u636e\u9a8c\u8bc1\n\n\n\u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u591a\u7528\u4e8e\u8868\u5355\u9a8c\u8bc1\u3002\n\n\n\n\nCerberus\uff1a\u4e00\u4e2a\u6620\u5c04\u9a8c\u8bc1\u5668\uff08mappings-validator\uff09\u3002\u652f\u6301\u591a\u79cd\u89c4\u5219\uff0c\u63d0\u4f9b\u5f52\u4e00\u5316\u529f\u80fd\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u5b9a\u5236\u4e3a Python \u98ce\u683c\u7684 schema \u5b9a\u4e49\u3002\n\u5b98\u7f51\n\n\ncolander\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9\u4ece XML, JSON\uff0cHTML \u8868\u5355\u83b7\u53d6\u7684\u6570\u636e\u6216\u5176\u4ed6\u540c\u6837\u7b80\u5355\u7684\u5e8f\u5217\u5316\u6570\u636e\u8fdb\u884c\u9a8c\u8bc1\u548c\u53cd\u5e8f\u5217\u5316\u7684\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nkmatch\uff1a\u4e00\u79cd\u7528\u4e8e\u5339\u914d/\u9a8c\u8bc1/\u7b5b\u9009 Python \u5b57\u5178\u7684\u8bed\u8a00\u3002\n\u5b98\u7f51\n\n\nschema\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9 Python \u6570\u636e\u7ed3\u6784\u8fdb\u884c\u9a8c\u8bc1\u7684\u5e93\u3002\n\u5b98\u7f51\n \n\n\nSchematics\uff1a\u6570\u636e\u7ed3\u6784\u9a8c\u8bc1\u3002\n\u5b98\u7f51\n\n\nvalideer\uff1a\u8f7b\u91cf\u7ea7\u53ef\u6269\u5c55\u7684\u6570\u636e\u9a8c\u8bc1\u548c\u9002\u914d\u5e93\u3002\n\u5b98\u7f51\n\n\nvoluptuous\uff1a\u4e00\u4e2a Python \u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u4e3b\u8981\u662f\u4e3a\u4e86\u9a8c\u8bc1\u4f20\u5165 Python \u7684 JSON\uff0cYAML \u7b49\u6570\u636e\u3002\n\u5b98\u7f51\n\n\njsonschema\uff1a\nJSON Schema\n\u7684 python \u5b9e\u73b0\uff0c\u7528\u4e8e JSON \u6570\u636e\u7684\u9a8c\u8bc1\u3002\n\u5b98\u7f51\n\n\n\n\n\u53cd\u5783\u573e\u6280\u672f\n\n\n\u5e2e\u52a9\u4f60\u548c\u7535\u5b50\u5783\u573e\u8fdb\u884c\u6218\u6597\u7684\u5e93\u3002\n\n\n\n\ndjango-simple-captcha\uff1a\u4e00\u4e2a\u7b80\u5355\u3001\u9ad8\u5ea6\u53ef\u5b9a\u5236\u7684 Django \u5e94\u7528\uff0c\u53ef\u4ee5\u4e3a\u4efb\u4f55 Django \u8868\u5355\u6dfb\u52a0\u9a8c\u8bc1\u7801\u3002\n\u5b98\u7f51\n\n\ndjango-simple-spam-blocker\uff1a\u4e00\u4e2a\u7528\u4e8e Django \u7684\u7b80\u5355\u7684\u7535\u5b50\u5783\u573e\u5c4f\u853d\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u6807\u8bb0\n\n\n\u7528\u6765\u8fdb\u884c\u6807\u8bb0\u7684\u5e93\u3002\n\n\n\n\ndjango-taggit\uff1a\u7b80\u5355\u7684 Django \u6807\u8bb0\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u7ba1\u7406\u9762\u677f\n\n\n\u7ba1\u7406\u754c\u9762\u5e93\u3002\n\n\n\n\nAjenti\uff1a\u4e00\u4e2a\u4f60\u7684\u670d\u52a1\u5668\u503c\u5f97\u62e5\u6709\u7684\u7ba1\u7406\u9762\u677f\u3002\n\u5b98\u7f51\n\n\ndjango-suit\uff1aDjango \u7ba1\u7406\u754c\u9762\u7684\u4e00\u4e2a\u66ff\u4ee3\u54c1 (\u4ec5\u5bf9\u4e8e\u975e\u5546\u4e1a\u7528\u9014\u662f\u514d\u8d39\u7684)\u3002\n\u5b98\u7f51\n\n\ndjango-xadmin\uff1aDjango admin \u7684\u4e00\u4e2a\u66ff\u4ee3\u54c1\uff0c\u5177\u6709\u5f88\u591a\u4e0d\u9519\u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nflask-admin\uff1a\u4e00\u4e2a\u7528\u4e8e Flask \u7684\u7b80\u5355\u53ef\u6269\u5c55\u7684\u7ba1\u7406\u754c\u9762\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nflower\uff1a\u4e00\u4e2a\u5bf9 Celery \u96c6\u7fa4\u8fdb\u884c\u5b9e\u65f6\u76d1\u63a7\u548c\u63d0\u4f9b web \u7ba1\u7406\u754c\u9762\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nGrappelli\uff1aDjango \u7ba1\u7406\u754c\u9762\u7684\u4e00\u4e2a\u6f02\u4eae\u7684\u76ae\u80a4\u3002\n\u5b98\u7f51\n \n\n\nWooey\uff1a\u4e00\u4e2a Django \u5e94\u7528\uff0c\u53ef\u4ee5\u4e3a Python \u811a\u672c\u521b\u5efa web \u7528\u6237\u754c\u9762\u3002\n\u5b98\u7f51\n\n\n\n\n\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\n\n\n\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u662f\u4e00\u4e2a\u8f6f\u4ef6\uff0c\u5b83\u628a\u6587\u672c\u548c\u6a21\u677f\u4f5c\u4e3a\u8f93\u5165\uff0c\u7136\u540e\u8f93\u51fa HTML \u6587\u4ef6\u3002\n\n\n\n\nPelican\uff1a\u4f7f\u7528 Markdown \u6216 ReST \u6765\u5904\u7406\u5185\u5bb9\uff0c Jinja 2 \u6765\u5236\u4f5c\u4e3b\u9898\u3002\u652f\u6301 DVCS, Disqus.\u3002AGPL \u8bb8\u53ef\u3002\n\u5b98\u7f51\n\n\nCactus\uff1a\u4e3a\u8bbe\u8ba1\u5e08\u8bbe\u8ba1\u7684\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n \n\n\nHyde\uff1a\u57fa\u4e8e Jinja2 \u7684\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nNikola\uff1a\u4e00\u4e2a\u9759\u6001\u7f51\u7ad9\u548c\u535a\u5ba2\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nTinkerer\uff1aTinkerer \u662f\u4e00\u4e2a\u535a\u5ba2\u5f15\u64ce/\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\uff0c\u7531 Sphinx \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\nLektor\uff1a\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684\u9759\u6001 CMS \u548c\u535a\u5ba2\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\n\n\n\u8fdb\u7a0b\n\n\n\u64cd\u4f5c\u7cfb\u7edf\u8fdb\u7a0b\u542f\u52a8\u53ca\u901a\u4fe1\u5e93\u3002\n\n\n\n\nenvoy\uff1a\u6bd4 Python \nsubprocess\n \u6a21\u5757\u66f4\u4eba\u6027\u5316\u3002\n\u5b98\u7f51\n\n\nsarge\uff1a\u53e6\u4e00 \u79cd subprocess \u6a21\u5757\u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nsh\uff1a\u4e00\u4e2a\u5b8c\u5907\u7684 subprocess \u66ff\u4ee3\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\u5e76\u53d1\u548c\u5e76\u884c\n\n\n\u7528\u4ee5\u8fdb\u884c\u5e76\u53d1\u548c\u5e76\u884c\u64cd\u4f5c\u7684\u5e93\u3002\n\n\n\n\nmultiprocessing\uff1a(Python \u6807\u51c6\u5e93) \u57fa\u4e8e\u8fdb\u7a0b\u7684\u201c\u7ebf\u7a0b\u201d\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nthreading\uff1a(Python \u6807\u51c6\u5e93)\u66f4\u9ad8\u5c42\u7684\u7ebf\u7a0b\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\neventlet\uff1a\u652f\u6301 WSGI \u7684\u5f02\u6b65\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ngevent\uff1a\u4e00\u4e2a\u57fa\u4e8e\u534f\u7a0b\u7684 Python \u7f51\u7edc\u5e93\uff0c\u4f7f\u7528 \ngreenlet\n\u3002\n\u5b98\u7f51\n\n\nTomorrow\uff1a\u7528\u4e8e\u4ea7\u751f\u5f02\u6b65\u4ee3\u7801\u7684\u795e\u5947\u7684\u88c5\u9970\u5668\u8bed\u6cd5\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nuvloop\uff1a\u5728 libuv \u4e4b\u4e0a\u8d85\u5feb\u901f\u5b9e\u73b0 asyncio \u4e8b\u4ef6\u5faa\u73af\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f51\u7edc\n\n\n\u7528\u4e8e\u7f51\u7edc\u7f16\u7a0b\u7684\u5e93\u3002\n\n\n\n\nasyncio\uff1a(Python \u6807\u51c6\u5e93) \u5f02\u6b65 I/O, \u4e8b\u4ef6\u5faa\u73af, \u534f\u7a0b\u4ee5\u53ca\u4efb\u52a1\u3002\n\u5b98\u7f51\n\n\nTwisted\n\uff1a\u4e00\u4e2a\u4e8b\u4ef6\u9a71\u52a8\u7684\u7f51\u7edc\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\npulsar\uff1a\u4e8b\u4ef6\u9a71\u52a8\u7684\u5e76\u53d1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ndiesel\uff1a\u57fa\u4e8e Greenlet \u7684\u4e8b\u4ef6 I/O \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\npyzmq\uff1a\u4e00\u4e2a ZeroMQ \u6d88\u606f\u5e93\u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nToapi\uff1a\u4e00\u4e2a\u8f7b\u5de7\uff0c\u7b80\u5355\uff0c\u5feb\u901f\u7684 Flask \u5e93\uff0c\u81f4\u529b\u4e8e\u4e3a\u6240\u6709\u7f51\u7ad9\u63d0\u4f9b API \u670d\u52a1\u3002\n\u5b98\u7f51\n\n\ntxZMQ\uff1a\u57fa\u4e8e Twisted \u7684 ZeroMQ \u6d88\u606f\u5e93\u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\nWebSocket\n\n\n\u5e2e\u52a9\u4f7f\u7528 WebSocket \u7684\u5e93\u3002\n\n\n\n\nAutobahnPython\uff1a\u7ed9 Python \u3001\u4f7f\u7528\u7684 WebSocket \n WAMP \u57fa\u4e8e Twisted \u548c \nasyncio\n\u3002\n\u5b98\u7f51\n\n\nCrossbar\uff1a\u5f00\u6e90\u7edf\u4e00\u5e94\u7528\u8def\u7531(Websocket \n WAMP for Python on Autobahn)\u3002\n\u5b98\u7f51\n\n\ndjango-socketio\uff1a\u7ed9 Django \u7528\u7684 WebSockets\u3002\n\u5b98\u7f51\n\n\nWebSocket-for-Python\uff1a\u4e3a Python2/3 \u4ee5\u53ca PyPy \u7f16\u5199\u7684 WebSocket \u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nWSGI \u670d\u52a1\u5668\n\n\n\u517c\u5bb9 WSGI \u7684 web \u670d\u52a1\u5668\n\n\n\n\ngunicorn\uff1aPre-forked, \u90e8\u5206\u662f\u7531 C \u8bed\u8a00\u7f16\u5199\u7684\u3002\n\u5b98\u7f51\n\n\nuwsgi\uff1auwsgi \u9879\u76ee\u7684\u76ee\u7684\u662f\u5f00\u53d1\u4e00\u7ec4\u5168\u6808\u5de5\u5177\uff0c\u7528\u6765\u5efa\u7acb\u6258\u7ba1\u670d\u52a1\uff0c \u7531 C \u8bed\u8a00\u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nbjoern\n\uff1a\u5f02\u6b65\uff0c\u975e\u5e38\u5feb\u901f\uff0c\u7531 C \u8bed\u8a00\u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nfapws3\uff1a\u5f02\u6b65 (\u4ec5\u5bf9\u4e8e\u7f51\u7edc\u7aef)\uff0c\u7531 C \u8bed\u8a00\u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nmeinheld\uff1a\u5f02\u6b65\uff0c\u90e8\u5206\u662f\u7531 C \u8bed\u8a00\u7f16\u5199\u7684\u3002\n\u5b98\u7f51\n\n\nnetius\uff1a\u5f02\u6b65\uff0c\u975e\u5e38\u5feb\u901f\u3002\n\u5b98\u7f51\n\n\npaste\uff1a\u591a\u7ebf\u7a0b\uff0c\u7a33\u5b9a\uff0c\u4e45\u7ecf\u8003\u9a8c\u3002\n\u5b98\u7f51\n\n\nrocket\uff1a\u591a\u7ebf\u7a0b\u3002\n\u5b98\u7f51\n\n\nwaitress\uff1a\u591a\u7ebf\u7a0b, \u662f\u5b83\u9a71\u52a8\u7740 Pyramid \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nWerkzeug\uff1a\u4e00\u4e2a WSGI \u5de5\u5177\u5e93\uff0c\u9a71\u52a8\u7740 Flask \uff0c\u800c\u4e14\u53ef\u4ee5\u5f88\u65b9\u4fbf\u5927\u5d4c\u5165\u5230\u4f60\u7684\u9879\u76ee\u4e2d\u53bb\u3002\n\u5b98\u7f51\n\n\n\n\nRPC \u670d\u52a1\u5668\n\n\n\u517c\u5bb9 RPC \u7684\u670d\u52a1\u5668\u3002\n\n\n\n\nSimpleJSONRPCServer\uff1a\u8fd9\u4e2a\u5e93\u662f JSON-RPC \u89c4\u8303\u7684\u4e00\u4e2a\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nSimpleXMLRPCServer\uff1a(Python \u6807\u51c6\u5e93) \u7b80\u5355\u7684 XML-RPC \u670d\u52a1\u5668\u5b9e\u73b0\uff0c\u5355\u7ebf\u7a0b\u3002\n\u5b98\u7f51\n\n\nzeroRPC\uff1azerorpc \u662f\u4e00\u4e2a\u7075\u6d3b\u7684 RPC \u5b9e\u73b0\uff0c\u57fa\u4e8e ZeroMQ \u548c MessagePack\u3002\n\u5b98\u7f51\n\n\n\n\n\u5bc6\u7801\u5b66\n\n\n\n\ncryptography\uff1a\u8fd9\u4e2a\u8f6f\u4ef6\u5305\u610f\u5728\u63d0\u4f9b\u5bc6\u7801\u5b66\u57fa\u672c\u5185\u5bb9\u548c\u65b9\u6cd5\u63d0\u4f9b\u7ed9 Python \u5f00\u53d1\u8005\u3002\n\u5b98\u7f51\n\n\nhashids\uff1a\u5728 Python \u4e2d\u5b9e\u73b0 \nhashids\n \u3002\n\u5b98\u7f51\n\n\nParamiko\uff1aSSHv2 \u534f\u8bae\u7684 Python (2.6+, 3.3+) \uff0c\u63d0\u4f9b\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nPasslib\uff1a\u5b89\u5168\u5bc6\u7801\u5b58\u50a8\uff0f\u54c8\u5e0c\u5e93\uff0c\n\u5b98\u7f51\n\n\nPyCrypto\uff1aPython \u5bc6\u7801\u5b66\u5de5\u5177\u7bb1\u3002\n\u5b98\u7f51\n\n\nPyNacl\uff1a\u7f51\u7edc\u548c\u5bc6\u7801\u5b66(NaCl) \u5e93\u7684 Python \u7ed1\u5b9a\u3002\n\u5b98\u7f51\n\n\n\n\n\u56fe\u5f62\u7528\u6237\u754c\u9762\n\n\n\u7528\u6765\u521b\u5efa\u56fe\u5f62\u7528\u6237\u754c\u9762\u7a0b\u5e8f\u7684\u5e93\u3002\n\n\n\n\ncurses\uff1a\u5185\u5efa\u7684 \nncurses\n \u5c01\u88c5\uff0c\u7528\u6765\u521b\u5efa\u7ec8\u7aef\u56fe\u5f62\u7528\u6237\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nenaml\uff1a\u4f7f\u7528\u7c7b\u4f3c QML \u7684 Declaratic \u8bed\u6cd5\u6765\u521b\u5efa\u7f8e\u89c2\u7684\u7528\u6237\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nkivy\n\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u81ea\u7136\u7528\u6237\u4ea4\u4e92\uff08NUI\uff09\u5e94\u7528\u7a0b\u5e8f\u7684\u5e93\uff0c\u53ef\u4ee5\u8fd0\u884c\u5728 Windows, Linux, Mac OS X, Android \u4ee5\u53ca iOS \u5e73\u53f0\u4e0a\u3002\n\u5b98\u7f51\n\n\npyglet\uff1a\u4e00\u4e2a Python \u7684\u8de8\u5e73\u53f0\u7a97\u53e3\u53ca\u591a\u5a92\u4f53\u5e93\u3002\n\u5b98\u7f51\n\n\nPyQt\uff1a\u8de8\u5e73\u53f0\u7528\u6237\u754c\u9762\u6846\u67b6 \nQt\n \u7684 Python \u7ed1\u5b9a \uff0c\u652f\u6301 Qt v4 \u548c Qt v5\u3002\n\u5b98\u7f51\n\n\nPySide\uff1a\u8de8\u5e73\u53f0\u7528\u6237\u754c\u9762\u6846\u67b6 \nQt\n \u7684 Python \u7ed1\u5b9a \uff0c\u652f\u6301 Qt v4\u3002\n\u5b98\u7f51\n\n\nTkinter\uff1aTkinter \u662f Python GUI \u7684\u4e00\u4e2a\u4e8b\u5b9e\u6807\u51c6\u5e93\u3002\n\u5b98\u7f51\n\n\nToga\uff1a\u4e00\u4e2a Python \u539f\u751f\u7684, \u64cd\u4f5c\u7cfb\u7edf\u539f\u751f\u7684 GUI \u5de5\u5177\u5305\u3002\n\u5b98\u7f51\n\n\nurwid\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u7ec8\u7aef GUI \u5e94\u7528\u7684\u5e93\uff0c\u652f\u6301\u7ec4\u4ef6\uff0c\u4e8b\u4ef6\u548c\u4e30\u5bcc\u7684\u8272\u5f69\u7b49\u3002\n\u5b98\u7f51\n\n\nwxPython\uff1awxPython \u662f wxWidgets C++ \u7c7b\u5e93\u548c Python \u8bed\u8a00\u6df7\u5408\u7684\u4ea7\u7269\u3002\n\u5b98\u7f51\n\n\nPyGObject\uff1aGLib/GObject/GIO/GTK+ (GTK+3) \u7684 Python \u7ed1\u5b9a\u3002\n\u5b98\u7f51\n\n\nFlexx\uff1aFlexx \u662f\u4e00\u4e2a\u7eaf Python \u8bed\u8a00\u7f16\u5199\u7684\u7528\u6765\u521b\u5efa GUI \u7a0b\u5e8f\u7684\u5de5\u5177\u96c6\uff0c\u5b83\u4f7f\u7528 web \u6280\u672f\u8fdb\u884c\u754c\u9762\u7684\u5c55\u793a\u3002\n\u5b98\u7f51\n\n\n\n\n\u6e38\u620f\u5f00\u53d1\n\n\n\u8d85\u8d5e\u7684\u6e38\u620f\u5f00\u53d1\u5e93\u3002\n\n\n\n\nCocos2d\uff1acocos2d \u662f\u4e00\u4e2a\u7528\u6765\u5f00\u53d1 2D \u6e38\u620f\uff0c \u793a\u4f8b\u548c\u5176\u4ed6\u56fe\u5f62/\u4ea4\u4e92\u5e94\u7528\u7684\u6846\u67b6\u3002\u57fa\u4e8e pyglet\u3002\n\u5b98\u7f51\n\n\nPanda3D\uff1a\u7531\u8fea\u58eb\u5c3c\u5f00\u53d1\u7684 3D \u6e38\u620f\u5f15\u64ce\uff0c\u5e76\u7531\u5361\u5185\u57fa\u6885\u9647\u5a31\u4e50\u6280\u672f\u4e2d\u5fc3\u8d1f\u8d23\u7ef4\u62a4\u3002\u4f7f\u7528 C++ \u7f16\u5199, \u9488\u5bf9 Python \u8fdb\u884c\u4e86\u5b8c\u5168\u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nPygame\uff1aPygame \u662f\u4e00\u7ec4 Python \u6a21\u5757\uff0c\u7528\u6765\u7f16\u5199\u6e38\u620f\u3002\n\u5b98\u7f51\n\n\nPyOgre\uff1aOgre 3D \u6e32\u67d3\u5f15\u64ce\u7684 Python \u7ed1\u5b9a\uff0c\u53ef\u4ee5\u7528\u6765\u5f00\u53d1\u6e38\u620f\u548c\u4eff\u771f\u7a0b\u5e8f\u7b49\u4efb\u4f55 3D \u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nPyOpenGL\uff1aOpenGL \u7684 Python \u7ed1\u5b9a\u53ca\u5176\u76f8\u5173 APIs\u3002\n\u5b98\u7f51\n\n\nPySDL2\uff1aSDL2 \u5e93\u7684\u5c01\u88c5\uff0c\u57fa\u4e8e ctypes\u3002\n\u5b98\u7f51\n\n\nRenPy\uff1a\u4e00\u4e2a\u89c6\u89c9\u5c0f\u8bf4\uff08visual novel\uff09\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\n\n\n\u65e5\u5fd7\n\n\n\u7528\u6765\u751f\u6210\u548c\u64cd\u4f5c\u65e5\u5fd7\u7684\u5e93\u3002\n\n\n\n\nlogging\uff1a(Python \u6807\u51c6\u5e93) \u4e3a Python \u63d0\u4f9b\u65e5\u5fd7\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nlogbook\uff1aLogging \u5e93\u7684\u66ff\u4ee3\u54c1\u3002\n\u5b98\u7f51\n\n\nEliot\uff1a\u4e3a\u590d\u6742\u7684\u548c\u5206\u5e03\u5f0f\u7cfb\u7edf\u521b\u5efa\u65e5\u5fd7\u3002\n\u5b98\u7f51\n\n\nRaven\uff1aSentry \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nSentry\uff1a\u5b9e\u65f6\u8bb0\u5f55\u548c\u6536\u96c6\u65e5\u5fd7\u7684\u670d\u52a1\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\u6d4b\u8bd5\n\n\n\u8fdb\u884c\u4ee3\u7801\u5e93\u6d4b\u8bd5\u548c\u751f\u6210\u6d4b\u8bd5\u6570\u636e\u7684\u5e93\u3002\n\n\n\n\n\u6d4b\u8bd5\u6846\u67b6\n\n\nunittest\uff1a(Python \u6807\u51c6\u5e93) \u5355\u5143\u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nnose\uff1anose \u6269\u5c55\u4e86 unittest \u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\ncontexts\uff1a\u4e00\u4e2a Python 3.3+ \u7684 BDD \u6846\u67b6\u3002\u53d7\u5230 C# \u2013 Machine.Specifications \u7684\u542f\u53d1\u3002\n\u5b98\u7f51\n\n\nhypothesis\uff1aHypothesis \u662f\u4e00\u4e2a\u57fa\u4e8e\u5148\u8fdb\u7684 Quickcheck \u98ce\u683c\u7279\u6027\u7684\u6d4b\u8bd5\u5e93\u3002\n\u5b98\u7f51\n\n\nmamba\uff1aPython \u7684\u7ec8\u6781\u6d4b\u8bd5\u5de5\u5177\uff0c \u62e5\u62a4 BDD\u3002\n\u5b98\u7f51\n\n\nPyAutoGUI\uff1aPyAutoGUI \u662f\u4e00\u4e2a\u4eba\u6027\u5316\u7684\u8de8\u5e73\u53f0 GUI \u81ea\u52a8\u6d4b\u8bd5\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npyshould\uff1aShould \u98ce\u683c\u7684\u65ad\u8a00\uff0c\u57fa\u4e8e \nPyHamcrest\n\u3002\n\u5b98\u7f51\n\n\npytest\uff1a\u4e00\u4e2a\u6210\u719f\u7684\u5168\u529f\u80fd Python \u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngreen\uff1a\u5e72\u51c0\uff0c\u591a\u5f69\u7684\u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyvows\uff1aBDD \u98ce\u683c\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u53d7 Vows.js \u7684\u542f\u53d1\u3002\n\u5b98\u7f51\n\n\nRobot Framework\uff1a\u4e00\u4e2a\u901a\u7528\u7684\u81ea\u52a8\u5316\u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nWeb \u6d4b\u8bd5\n\n\nSelenium\uff1a\nSelenium\n WebDriver \u7684 Python \u7ed1\u5b9a\u3002\n\u5b98\u7f51\n\n\nlocust\uff1a\u4f7f\u7528 Python \u7f16\u5199\u7684\uff0c\u53ef\u6269\u5c55\u7684\u7528\u6237\u52a0\u8f7d\u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nsixpack\uff1a\u4e00\u4e2a\u548c\u8bed\u8a00\u65e0\u5173\u7684 A/B \u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nsplinter\uff1a\u5f00\u6e90\u7684 web \u5e94\u7528\u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nMock \u6d4b\u8bd5\n\n\nmock\uff1a(Python \u6807\u51c6\u5e93) \u4e00\u4e2a\u7528\u4e8e\u4f2a\u9020\u6d4b\u8bd5\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\ndoublex\uff1aPython \u7684\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684 doubles \u00a0\u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nfreezegun\uff1a\u901a\u8fc7\u4f2a\u9020\u65e5\u671f\u6a21\u5757\u6765\u751f\u6210\u4e0d\u540c\u7684\u65f6\u95f4\u3002\n\u5b98\u7f51\n\n\nhttmock\uff1a\u9488\u5bf9 Python 2.6+ \u548c 3.2+ \u751f\u6210 \u4f2a\u9020\u8bf7\u6c42\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nhttpretty\uff1aPython \u7684 HTTP \u8bf7\u6c42 mock \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nresponses\uff1a\u4f2a\u9020 Python \u4e2d\u7684 requests \u5e93\u7684\u4e00\u4e2a\u901a\u7528\u5e93\u3002\n\u5b98\u7f51\n\n\nVCR.py\uff1a\u5728\u4f60\u7684\u6d4b\u8bd5\u4e2d\u8bb0\u5f55\u548c\u91cd\u653e HTTP \u4ea4\u4e92\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5bf9\u8c61\u5de5\u5382\n\n\nfactoryboy\uff1a\u4e00\u4e2a Python \u7528\u7684\u6d4b\u8bd5\u56fa\u4ef6 (test fixtures) \u66ff\u4ee3\u5e93\u3002\n\u5b98\u7f51\n\n\nmixer\uff1a\u53e6\u5916\u4e00\u4e2a\u6d4b\u8bd5\u56fa\u4ef6 (test fixtures) \u66ff\u4ee3\u5e93\uff0c\u652f\u6301 Django, Flask, SQLAlchemy, Peewee \u7b49\u3002\n\u5b98\u7f51\n\n\nmodelmommy\uff1a\u4e3a Django \u6d4b\u8bd5\u521b\u5efa\u968f\u673a\u56fa\u4ef6\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4ee3\u7801\u8986\u76d6\u7387\n\n\ncoverage\uff1a\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u91cf\u3002\n\u5b98\u7f51\n\n\nCodecov\uff1a\u4e00\u4e2a\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u8bd5\u5de5\u5177\uff0c\u4e3a\u5f00\u6e90\u9879\u76ee\u63d0\u4f9b\u514d\u8d39\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u8bd5\u670d\u52a1\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4f2a\u6570\u636e\n\n\nfaker\uff1a\u4e00\u4e2a Python \u5e93\uff0c\u7528\u6765\u751f\u6210\u4f2a\u6570\u636e\u3002\n\u5b98\u7f51\n\n\nfake2db\uff1a\u4f2a\u6570\u636e\u5e93\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nradar\uff1a\u751f\u6210\u968f\u673a\u7684\u65e5\u671f/\u65f6\u95f4\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u9519\u8bef\u5904\u7406\n\n\nFuckIt.py\uff1aFuckIt.py \u4f7f\u7528\u6700\u5148\u8fdb\u7684\u6280\u672f\u6765\u4fdd\u8bc1\u4f60\u7684 Python \u4ee3\u7801\u65e0\u8bba\u5bf9\u9519\u90fd\u80fd\u7ee7\u7eed\u8fd0\u884c\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u4ee3\u7801\u5206\u6790\u548c Lint \u5de5\u5177\n\n\n\u8fdb\u884c\u4ee3\u7801\u5206\u6790\uff0c\u89e3\u6790\u548c\u64cd\u4f5c\u4ee3\u7801\u5e93\u7684\u5e93\u548c\u5de5\u5177\u3002\n\n\n\n\n\u4ee3\u7801\u5206\u6790\n\n\ncoala\uff1a\u8bed\u8a00\u72ec\u7acb\u548c\u6613\u4e8e\u6269\u5c55\u7684\u4ee3\u7801\u5206\u6790\u5e94\u7528\u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\ncode2flow\uff1a\u628a\u4f60\u7684 Python \u548c JavaScript \u4ee3\u7801\u8f6c\u6362\u4e3a\u6d41\u7a0b\u56fe\u3002\n\u5b98\u7f51\n\n\npycallgraph\uff1a\u8fd9\u4e2a\u5e93\u53ef\u4ee5\u628a\u4f60\u7684 Python \u5e94\u7528\u7684\u6d41\u7a0b(\u8c03\u7528\u56fe)\u8fdb\u884c\u53ef\u89c6\u5316\u3002\n\u5b98\u7f51\n\n\npysonar2\uff1aPython \u7c7b\u578b\u63a8\u65ad\u548c\u68c0\u7d22\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nLint \u5de5\u5177\n\n\nFlake8\uff1a\u6a21\u5757\u5316\u6e90\u7801\u68c0\u67e5\u5de5\u5177: pep8, pyflakes \u4ee5\u53ca co\u3002\n\u5b98\u7f51\n\n\nPylint\uff1a\u4e00\u4e2a\u5b8c\u5168\u53ef\u5b9a\u5236\u7684\u6e90\u7801\u5206\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nYAPF: Google \u7684 Python \u4ee3\u7801\u683c\u5f0f\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npylama\uff1aPython \u548c JavaScript \u7684\u4ee3\u7801\u5ba1\u67e5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4ee3\u7801\u683c\u5f0f\u5316\n\n\nautopep8\uff1a\u81ea\u52a8\u683c\u5f0f\u5316 Python \u4ee3\u7801\uff0c\u4ee5\u4f7f\u5176\u7b26\u5408 PEP8 \u89c4\u8303\u3002\n\u5b98\u7f51\n\n\nblack\uff1a\u4e00\u4e2a\u575a\u5b9a\u7684 Python \u4ee3\u7801\u683c\u5f0f\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u8c03\u8bd5\u5de5\u5177\n\n\n\u7528\u6765\u8fdb\u884c\u4ee3\u7801\u8c03\u8bd5\u7684\u5e93\u3002\n\n\n\n\n\u8c03\u8bd5\u5668\n\n\nipdb\uff1aIPython \u542f\u7528\u7684 \npdb\n\u3002\n\u5b98\u7f51\n\n\npudb\uff1a\u5168\u5c4f\uff0c\u57fa\u4e8e\u63a7\u5236\u53f0\u7684 Python \u8c03\u8bd5\u5668\u3002\n\u5b98\u7f51\n\n\npyringe\uff1a\u53ef\u4ee5\u5728 Python \u8fdb\u7a0b\u4e2d\u9644\u52a0\u548c\u6ce8\u5165\u4ee3\u7801\u7684\u8c03\u8bd5\u5668\u3002\n\u5b98\u7f51\n\n\nwdb\uff1a\u4e00\u4e2a\u5947\u5f02\u7684 web \u8c03\u8bd5\u5668\uff0c\u901a\u8fc7 WebSockets \u5de5\u4f5c\u3002\n\u5b98\u7f51\n\n\nwinpdb\uff1a\u4e00\u4e2a\u5177\u6709\u56fe\u5f62\u7528\u6237\u754c\u9762\u7684 Python \u8c03\u8bd5\u5668\uff0c\u53ef\u4ee5\u8fdb\u884c\u8fdc\u7a0b\u8c03\u8bd5\uff0c\u57fa\u4e8e rpdb2\u3002\n\u5b98\u7f51\n\n\ndjango-debug-toolbar\uff1a\u4e3a Django \u663e\u793a\u5404\u79cd\u8c03\u8bd5\u4fe1\u606f\u3002\n\u5b98\u7f51\n\n\ndjango-devserver\uff1a\u4e00\u4e2a Django \u8fd0\u884c\u670d\u52a1\u5668\u7684\u66ff\u4ee3\u54c1\u3002\n\u5b98\u7f51\n\n\nflask-debugtoolbar\uff1adjango-debug-toolbar \u7684 flask \u7248\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u6027\u80fd\u5206\u6790\u5668\n\n\nlineprofiler\uff1a\u9010\u884c\u6027\u80fd\u5206\u6790\u3002\n\u5b98\u7f51\n\n\nMemory Profiler\n\uff1a\u76d1\u63a7 Python \u4ee3\u7801\u7684\u5185\u5b58\u4f7f\u7528\u3002\n\u5b98\u7f51\n\u3001\n\u5185\u5b58\n\n\nprofiling\uff1a\u4e00\u4e2a\u4ea4\u4e92\u5f0f Python \u6027\u80fd\u5206\u6790\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\n\n\npyelftools\uff1a\u89e3\u6790\u548c\u5206\u6790 ELF \u6587\u4ef6\u4ee5\u53ca DWARF \u8c03\u8bd5\u4fe1\u606f\u3002\n\u5b98\u7f51\n\n\npython-statsd\uff1a\nstatsd\n \u670d\u52a1\u5668\u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u79d1\u5b66\u8ba1\u7b97\u548c\u6570\u636e\u5206\u6790\n\n\n\u7528\u6765\u8fdb\u884c\u79d1\u5b66\u8ba1\u7b97\u548c\u6570\u636e\u5206\u6790\u7684\u5e93\u3002\n\n\n\n\nastropy\uff1a\u4e00\u4e2a\u5929\u6587\u5b66 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nbcbio-nextgen\n\uff1a\u8fd9\u4e2a\u5de5\u5177\u7bb1\u4e3a\u5168\u81ea\u52a8\u9ad8\u901a\u91cf\u6d4b\u5e8f\u5206\u6790\u63d0\u4f9b\u7b26\u5408\u6700\u4f73\u5b9e\u8df5\u7684\u5904\u7406\u6d41\u7a0b\u3002\n\u5b98\u7f51\n\n\nbccb\uff1a\u751f\u7269\u5206\u6790\u76f8\u5173\u4ee3\u7801\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nBiopython\uff1aBiopython \u662f\u4e00\u7ec4\u53ef\u4ee5\u514d\u8d39\u4f7f\u7528\u7684\u7528\u6765\u8fdb\u884c\u751f\u7269\u8ba1\u7b97\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nblaze\n\uff1aNumPy \u548c Pandas \u7684\u5927\u6570\u636e\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\ncclib\n\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790\u548c\u89e3\u91ca\u8ba1\u7b97\u5316\u5b66\u8f6f\u4ef6\u5305\u8f93\u51fa\u7ed3\u679c\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nNetworkX\uff1a\u4e00\u4e2a\u4e3a\u590d\u6742\u7f51\u7edc\u8bbe\u8ba1\u7684\u9ad8\u6027\u80fd\u8f6f\u4ef6\u3002\n\u5b98\u7f51\n\n\nNeupy\uff1a\u6267\u884c\u548c\u6d4b\u8bd5\u5404\u79cd\u4e0d\u540c\u7684\u4eba\u5de5\u795e\u7ecf\u7f51\u7edc\u7b97\u6cd5\u3002\n\u5b98\u7f51\n\n\nNumba\uff1aPython JIT (just in time) \u7f16\u8bd1\u5668\uff0c\u9488\u5bf9\u79d1\u5b66\u7528\u7684 Python \uff0c\u7531 Cython \u548c NumPy \u7684\u5f00\u53d1\u8005\u5f00\u53d1\u3002\n\u5b98\u7f51\n\n\nNumPy\n\uff1a\u4f7f\u7528 Python \u8fdb\u884c\u79d1\u5b66\u8ba1\u7b97\u7684\u57fa\u7840\u5305\u3002\n\u5b98\u7f51\n\n\nOpen Babel\uff1a\u4e00\u4e2a\u5316\u5b66\u5de5\u5177\u7bb1\uff0c\u7528\u6765\u63cf\u8ff0\u591a\u79cd\u5316\u5b66\u6570\u636e\u3002\n\u5b98\u7f51\n\n\nOpen Mining\n\uff1a\u4f7f\u7528 Python \u6316\u6398\u5546\u4e1a\u60c5\u62a5 (BI) (Pandas web \u63a5\u53e3)\u3002\n\u5b98\u7f51\n\n\norange\n\uff1a\u901a\u8fc7\u53ef\u89c6\u5316\u7f16\u7a0b\u6216 Python \u811a\u672c\u8fdb\u884c\u6570\u636e\u6316\u6398\uff0c\u6570\u636e\u53ef\u89c6\u5316\uff0c\u5206\u6790\u548c\u673a\u5668\u5b66\u4e60\u3002\n\u5b98\u7f51\n\n\nPandas\uff1a\u63d0\u4f9b\u9ad8\u6027\u80fd\uff0c\u6613\u7528\u7684\u6570\u636e\u7ed3\u6784\u548c\u6570\u636e\u5206\u6790\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPyDy\uff1aPyDy \u662f Python Dynamics \u7684\u7f29\u5199\uff0c\u7528\u6765\u4e3a\u52a8\u529b\u5b66\u8fd0\u52a8\u5efa\u6a21\u5de5\u4f5c\u6d41\u7a0b\u63d0\u4f9b\u5e2e\u52a9\uff0c \u57fa\u4e8e NumPy, SciPy, IPython \u548c matplotlib\u3002\n\u5b98\u7f51\n\n\nPyMC\n\uff1a\u9a6c\u5c14\u79d1\u592b\u94fe\u8499\u7279\u5361\u6d1b\u91c7\u6837\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nRDKit\uff1a\u5316\u5b66\u4fe1\u606f\u5b66\u548c\u673a\u5668\u5b66\u4e60\u8f6f\u4ef6\u3002\n\u5b98\u7f51\n\n\nSciPy\n\uff1a\u7531\u4e00\u4e9b\u57fa\u4e8e Python \uff0c\u7528\u4e8e\u6570\u5b66\uff0c\u79d1\u5b66\u548c\u5de5\u7a0b\u7684\u5f00\u6e90\u8f6f\u4ef6\u6784\u6210\u7684\u751f\u6001\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nstatsmodels\n\uff1a\u7edf\u8ba1\u5efa\u6a21\u548c\u8ba1\u91cf\u7ecf\u6d4e\u5b66\u3002\n\u5b98\u7f51\n\n\nSymPy\uff1a\u4e00\u4e2a\u7528\u4e8e\u7b26\u53f7\u6570\u5b66\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nzipline\uff1a\u4e00\u4e2a Python \u7b97\u6cd5\u4ea4\u6613\u5e93\u3002\n\u5b98\u7f51\n\n\nBayesian-belief-networks\n\uff1a\u4f18\u96c5\u7684\u8d1d\u53f6\u65af\u4fe1\u5ff5\u7f51\u7edc\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u6570\u636e\u53ef\u89c6\u5316\n\n\n\u8fdb\u884c\u6570\u636e\u53ef\u89c6\u5316\u7684\u5e93\u3002 \u53c2\u89c1: \nawesome-javascript\n\u3002\n\n\n\n\nmatplotlib\uff1a\u4e00\u4e2a Python 2D \u7ed8\u56fe\u5e93\u3002\n\u5b98\u7f51\n\n\nbokeh\uff1a\u7528 Python \u8fdb\u884c\u4ea4\u4e92\u5f0f web \u7ed8\u56fe\u3002\n\u5b98\u7f51\n\n\nggplot\uff1aggplot2 \u7ed9 R \u63d0\u4f9b\u7684 API \u7684 Python \u7248\u672c\u3002\n\u5b98\u7f51\n\n\nplotly\uff1a\u534f\u540c Python \u548c matplotlib \u5de5\u4f5c\u7684 web \u7ed8\u56fe\u5e93\u3002\n\u5b98\u7f51\n\n\npyecharts\uff1a\u57fa\u4e8e\u767e\u5ea6 Echarts \u7684\u6570\u636e\u53ef\u89c6\u5316\u5e93\u3002\n\u5b98\u7f51\n\n\npygal\uff1a\u4e00\u4e2a Python SVG \u56fe\u8868\u521b\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npygraphviz\uff1aGraphviz \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nPyQtGraph\uff1a\u4ea4\u4e92\u5f0f\u5b9e\u65f6 2D/3D/ \u56fe\u50cf\u7ed8\u5236\u53ca\u79d1\u5b66/\u5de5\u7a0b\u5b66\u7ec4\u4ef6\u3002\n\u5b98\u7f51\n\n\nSnakeViz\uff1a\u4e00\u4e2a\u57fa\u4e8e\u6d4f\u89c8\u5668\u7684 Python's cProfile \u6a21\u5757\u8f93\u51fa\u7ed3\u679c\u67e5\u770b\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nvincent\uff1a\u628a Python \u8f6c\u6362\u4e3a Vega \u8bed\u6cd5\u7684\u8f6c\u6362\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nVisPy\uff1a\u57fa\u4e8e OpenGL \u7684\u9ad8\u6027\u80fd\u79d1\u5b66\u53ef\u89c6\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u8ba1\u7b97\u673a\u89c6\u89c9\n\n\n\u8ba1\u7b97\u673a\u89c6\u89c9\u5e93\u3002\n\n\n\n\nOpenCV\uff1a\u5f00\u6e90\u8ba1\u7b97\u673a\u89c6\u89c9\u5e93\u3002\n\u5b98\u7f51\n\n\npyocr\uff1aTesseract \u548c Cuneiform \u7684\u5305\u88c5\u5e93\u3002\n\u5b98\u7f51\n\n\npytesseract\uff1a\nGoogle Tesseract OCR\n \u7684\u53e6\u4e00\u5305\u88c5\u5e93\u3002\n\u5b98\u7f51\n\n\nSimpleCV\n\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u8ba1\u7b97\u673a\u89c6\u89c9\u5e94\u7528\u7684\u5f00\u6e90\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u673a\u5668\u5b66\u4e60\n\n\n\u673a\u5668\u5b66\u4e60\u5e93\u3002 \u53c2\u89c1: \nawesome-machine-learning\n.\n\n\n\n\nCaffe: \u4e00\u4e2a \nCaffe\n \u7684 python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nCaffe2\n\uff1a\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684\uff0c\u6a21\u5757\u5316\u7684\uff0c\u53ef\u6269\u5c55\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nCrab\uff1a\u7075\u6d3b\u3001\u5feb\u901f\u7684\u63a8\u8350\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\ngensim\uff1a\u4eba\u6027\u5316\u7684\u8bdd\u9898\u5efa\u6a21\u5e93\u3002\n\u5b98\u7f51\n\n\nhebel\uff1aGPU \u52a0\u901f\u7684\u6df1\u5ea6\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\nkeras\n: \u4ee5 tensorflow/theano/CNTK \u4e3a\u540e\u7aef\u7684\u6df1\u5ea6\u5b66\u4e60\u5c01\u88c5\u5e93\uff0c\u5feb\u901f\u4e0a\u624b\u795e\u7ecf\u7f51\u7edc\u3002\n\u5b98\u7f51\n\n\nMXNet\n\uff1a\u4e00\u4e2a\u9ad8\u6548\u548c\u7075\u6d3b\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nNuPIC\uff1a\u667a\u80fd\u8ba1\u7b97 Numenta \u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\npattern\uff1aPython \u7f51\u7edc\u6316\u6398\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nPyBrain\n\uff1a\u53e6\u4e00\u4e2a Python \u673a\u5668\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\npydeep\uff1aPython \u6df1\u5ea6\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\nPylearn2\n\uff1a\u4e00\u4e2a\u57fa\u4e8e \nTheano\n \u7684\u673a\u5668\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\npython-recsys\n\uff1a\u4e00\u4e2a\u7528\u6765\u5b9e\u73b0\u63a8\u8350\u7cfb\u7edf\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nPytorch\n\uff1a\u4e00\u4e2a\u5177\u6709\u5f20\u91cf\u548c\u52a8\u6001\u795e\u7ecf\u7f51\u7edc\uff0c\u5e76\u6709\u5f3a\u5927 GPU \u52a0\u901f\u80fd\u529b\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nscikit-learn\uff1a\u57fa\u4e8e SciPy \u6784\u5efa\u7684\u673a\u5668\u5b66\u4e60 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nskflow\uff1a\u4e00\u4e2a \nTensorFlow\n \u7684\u7b80\u5316\u63a5\u53e3(\u6a21\u4eff scikit-learn)\u3002\n\u5b98\u7f51\n\n\nTensorFlow\n\uff1a\u8c37\u6b4c\u5f00\u6e90\u7684\u6700\u53d7\u6b22\u8fce\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nTheano\uff1a\u4e00\u4e2a\u5feb\u901f\u6570\u503c\u8ba1\u7b97\u5e93\u3002\n\u5b98\u7f51\n\n\nvowpalporpoise\uff1a\u8f7b\u91cf\u7ea7 \nVowpal Wabbit\n \u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\nMapReduce\n\n\nMapReduce \u6846\u67b6\u548c\u5e93\u3002\n\n\n\n\ndpark\n\uff1aSpark \u7684 Python \u514b\u9686\u7248\uff0c\u4e00\u4e2a\u7c7b\u4f3c MapReduce \u7684\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ndumbo\uff1a\u8fd9\u4e2a Python \u6a21\u5757\u53ef\u4ee5\u8ba9\u4eba\u8f7b\u677e\u7684\u7f16\u5199\u548c\u8fd0\u884c Hadoop \u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\nluigi\uff1a\u8fd9\u4e2a\u6a21\u5757\u5e2e\u4f60\u6784\u5efa\u6279\u5904\u7406\u4f5c\u4e1a\u7684\u590d\u6742\u6d41\u6c34\u7ebf\u3002\n\u5b98\u7f51\n\n\nmrjob\uff1a\u5728 Hadoop \u6216 Amazon Web Services \u4e0a\u8fd0\u884c MapReduce \u4efb\u52a1\u3002\n\u5b98\u7f51\n\n\nPySpark\uff1aSpark \u7684 Python API \u3002\n\u5b98\u7f51\n\n\nstreamparse\uff1a\u8fd0\u884c\u9488\u5bf9\u4e8b\u5b9e\u6570\u636e\u6d41\u7684 Python \u4ee3\u7801\u3002\u96c6\u6210\u4e86 \nApache Storm\n\u3002\n\u5b98\u7f51\n\n\n\n\n\u51fd\u6570\u5f0f\u7f16\u7a0b\n\n\n\u4f7f\u7528 Python \u8fdb\u884c\u51fd\u6570\u5f0f\u7f16\u7a0b\u3002\n\n\n\n\nCyToolz\uff1aToolz \u7684 Cython \u5b9e\u73b0 : \u9ad8\u6027\u80fd\u51fd\u6570\u5f0f\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nfn.py\uff1a\u5728 Python \u4e2d\u8fdb\u884c\u51fd\u6570\u5f0f\u7f16\u7a0b : \u5b9e\u73b0\u4e86\u4e00\u4e9b\u4eab\u53d7\u51fd\u6570\u5f0f\u7f16\u7a0b\u7f3a\u5931\u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nfuncy\uff1a\u70ab\u9177\u53c8\u5b9e\u7528\u7684\u51fd\u6570\u5f0f\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nToolz\uff1a\u4e00\u7ec4\u7528\u4e8e\u8fed\u4ee3\u5668\uff0c\u51fd\u6570\u548c\u5b57\u5178\u7684\u51fd\u6570\u5f0f\u7f16\u7a0b\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u7b2c\u4e09\u65b9 API\n\n\n\u7528\u6765\u8bbf\u95ee\u7b2c\u4e09\u65b9 API \u7684\u5e93\u3002 \u53c2\u89c1\uff1a \nList of Python API Wrappers and Libraries\n\u3002\n\n\n\n\napache-libcloud\uff1a\u4e00\u4e2a\u4e3a\u5404\u79cd\u4e91\u8bbe\u8ba1\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nboto\uff1aAmazon Web Services \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\ndjango-wordpress\uff1aWordPress models and views for Django.\n\u5b98\u7f51\n\n\nfacebook-sdk\uff1aFacebook \u5e73\u53f0\u7684 Python SDK.\n\u5b98\u7f51\n\n\nfacepy\uff1aFacepy \u8ba9\u548c Facebook's Graph API \u7684\u4ea4\u4e92\u53d8\u5f97\u66f4\u5bb9\u6613\u3002\n\u5b98\u7f51\n\n\ngmail\uff1aGmail \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\ngoogle-api-python-client\uff1aPython \u7528\u7684 Google APIs \u5ba2\u6237\u7aef\u5e93\u3002\n\u5b98\u7f51\n\n\ngspread\uff1aGoogle \u7535\u5b50\u8868\u683c\u7684 Python API.\n\u5b98\u7f51\n\n\ntwython\uff1aTwitter API \u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\nDevOps \u5de5\u5177\n\n\n\u7528\u4e8e DevOps \u7684\u8f6f\u4ef6\u548c\u5e93\u3002\n\n\n\n\nAnsible\uff1a\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684 IT \u81ea\u52a8\u5316\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nSaltStack\uff1a\u57fa\u7840\u8bbe\u65bd\u81ea\u52a8\u5316\u548c\u7ba1\u7406\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nOpenStack\uff1a\u7528\u4e8e\u6784\u5efa\u79c1\u6709\u548c\u516c\u6709\u4e91\u7684\u5f00\u6e90\u8f6f\u4ef6\u3002\n\u5b98\u7f51\n\n\nDocker Compose\uff1a\u5feb\u901f\uff0c\u5206\u79bb\u7684\u5f00\u53d1\u73af\u5883\uff0c\u4f7f\u7528 Docker\u3002\n\u5b98\u7f51\n\n\nFabric\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0cPython \u98ce\u683c\u7684\u5de5\u5177\uff0c\u7528\u6765\u8fdb\u884c\u8fdc\u7a0b\u6267\u884c\u548c\u90e8\u7f72\u3002\n\u5b98\u7f51\n\n\ncuisine\uff1a\u4e3a Fabric \u63d0\u4f9b\u4e00\u7cfb\u5217\u9ad8\u7ea7\u51fd\u6570\u3002\n\u5b98\u7f51\n\n\nFabtools\uff1a\u4e00\u4e2a\u7528\u6765\u7f16\u5199\u8d85\u8d5e\u7684 Fabric \u6587\u4ef6\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngitapi\uff1aGit \u7684\u7eaf Python API\u3002\n\u5b98\u7f51\n\n\nhgapi\uff1aMercurial \u7684\u7eaf Python API\u3002\n\u5b98\u7f51\n\n\nhoncho\uff1a\nForeman\n \u7684 Python \u514b\u9686\u7248\uff0c\u7528\u6765\u7ba1\u7406\u57fa\u4e8e \nProcfile\n \u7684\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\npexpect\uff1aControlling interactive programs in a pseudo-terminal like \u5728\u4e00\u4e2a\u4f2a\u7ec8\u7aef\u4e2d\u63a7\u5236\u4ea4\u4e92\u7a0b\u5e8f\uff0c\u5c31\u50cf GNU expect \u4e00\u6837\u3002\n\u5b98\u7f51\n\n\npsutil\uff1a\u4e00\u4e2a\u8de8\u5e73\u53f0\u8fdb\u7a0b\u548c\u7cfb\u7edf\u5de5\u5177\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nsupervisor\uff1aUNIX \u7684\u8fdb\u7a0b\u63a7\u5236\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\n\n\n\u4efb\u52a1\u8c03\u5ea6\n\n\n\u4efb\u52a1\u8c03\u5ea6\u5e93\u3002\n\n\n\n\nAPScheduler\uff1a\u8f7b\u5de7\u4f46\u5f3a\u5927\u7684\u8fdb\u7a0b\u5185\u4efb\u52a1\u8c03\u5ea6\uff0c\u4f7f\u4f60\u53ef\u4ee5\u8c03\u5ea6\u51fd\u6570\u3002\n\u5b98\u7f51\n\n\ndjango-schedule\uff1a\u4e00\u4e2a Django \u6392\u7a0b\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\ndoit\uff1a\u4e00\u4e2a\u4efb\u52a1\u6267\u884c\u548c\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngunnery\uff1a\u5206\u5e03\u5f0f\u7cfb\u7edf\u4f7f\u7528\u7684\u591a\u7528\u9014\u4efb\u52a1\u6267\u884c\u5de5\u5177 \uff0c\u5177\u6709 web \u4ea4\u4e92\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nJoblib\uff1a\u4e00\u7ec4\u4e3a Python \u63d0\u4f9b\u8f7b\u91cf\u7ea7\u4f5c\u4e1a\u6d41\u6c34\u7ebf\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPlan\uff1a\u5982\u6709\u795e\u52a9\u5730\u7f16\u5199 crontab \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nschedule\uff1a\u4eba\u6027\u5316\u7684 Python \u4efb\u52a1\u8c03\u5ea6\u5e93\u3002\n\u5b98\u7f51\n\n\nSpiff\uff1a\u4f7f\u7528\u7eaf Python \u5b9e\u73b0\u7684\u5f3a\u5927\u7684\u5de5\u4f5c\u6d41\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\nTaskFlow\uff1a\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u4f60\u65b9\u4fbf\u6267\u884c\u4efb\u52a1\u7684 Python \u5e93\uff0c\u4e00\u81f4\u5e76\u4e14\u53ef\u9760\u3002\n\u5b98\u7f51\n\n*\u00a0 AirFlow\uff1aAirflow \u662fAirbnb\u516c\u53f8\u5f00\u6e90\u7684\uff0c\u662f\u4e00\u4e2a\u5de5\u4f5c\u6d41\u5206\u914d\u7ba1\u7406\u7cfb\u7edf\uff0c\u901a\u8fc7\u6709\u5411\u975e\u5faa\u73af\u56fe\u7684\u65b9\u5f0f\u7ba1\u7406\u4efb\u52a1\u6d41\u7a0b\uff0c\u8bbe\u7f6e\u4efb\u52a1\u4f9d\u8d56\u5173\u7cfb\u548c\u65f6\u95f4\u8c03\u5ea6\u3002\n\u5b98\u65b9\n\n\u00a0\n\n\n\n\n\u5916\u6765\u51fd\u6570\u63a5\u53e3\n\n\n\u4f7f\u7528\u5916\u6765\u51fd\u6570\u63a5\u53e3\u7684\u5e93\u3002\n\n\n\n\ncffi\uff1a\u7528\u6765\u8c03\u7528 C \u4ee3\u7801\u7684\u5916\u6765\u51fd\u6570\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nctypes\n\uff1a(Python \u6807\u51c6\u5e93) \u7528\u6765\u8c03\u7528 C \u4ee3\u7801\u7684\u5916\u6765\u51fd\u6570\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nPyCUDA\uff1aNvidia CUDA API \u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nSWIG\uff1a\u7b80\u5316\u7684\u5c01\u88c5\u548c\u63a5\u53e3\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\u9ad8\u6027\u80fd\n\n\n\u8ba9 Python \u66f4\u5feb\u7684\u5e93\u3002\n\n\n\n\nCython\uff1a\u4f18\u5316\u7684 Python \u9759\u6001\u7f16\u8bd1\u5668\u3002\u4f7f\u7528\u7c7b\u578b\u6df7\u5408\u4f7f Python \u7f16\u8bd1\u6210 C \u6216 C++ \u6a21\u5757\u6765\u83b7\u5f97\u6027\u80fd\u7684\u6781\u5927\u63d0\u5347\u3002\n\u5b98\u7f51\n\n\nPeachPy\uff1a\u5d4c\u5165 Python \u7684 x86-64 \u6c47\u7f16\u5668\u3002\u53ef\u4ee5\u88ab\u7528\u4f5c Python \u5185\u8054\u7684\u6c47\u7f16\u5668\u6216\u8005\u662f\u72ec\u7acb\u7684\u6c47\u7f16\u5668\uff0c\u7528\u4e8e Windows, Linux, OS X, Native Client \u6216\u8005 Go \u3002\n\u5b98\u7f51\n\n\nPyPy\uff1a\u4f7f\u7528 Python \u5b9e\u73b0\u7684 Python\u3002\u89e3\u91ca\u5668\u4f7f\u7528\u9ed1\u9b54\u6cd5\u52a0\u5feb Python \u8fd0\u884c\u901f\u5ea6\u4e14\u4e0d\u9700\u8981\u52a0\u5165\u989d\u5916\u7684\u7c7b\u578b\u4fe1\u606f\u3002\n\u5b98\u7f51\n\n\nPyston\n\uff1a\u4f7f\u7528 LLVM \u548c\u73b0\u4ee3 JIT \u6280\u672f\u6784\u5efa\u7684 Python \u5b9e\u73b0\uff0c\u76ee\u6807\u662f\u4e3a\u4e86\u83b7\u5f97\u5f88\u597d\u7684\u6027\u80fd\u3002\n\u5b98\u7f51\n\n\nStackless Python\uff1a\u4e00\u4e2a\u5f3a\u5316\u7248\u7684 Python\u3002\n\u5b98\u7f51\n\n\n\n\n\u5fae\u8f6f\u7684 Windows \u5e73\u53f0\n\n\n\u5728 Windows \u5e73\u53f0\u4e0a\u8fdb\u884c Python \u7f16\u7a0b\u3002\n\n\n\n\nPython(x,y)\uff1a\u9762\u5411\u79d1\u5b66\u5e94\u7528\u7684 Python \u53d1\u884c\u7248\uff0c\u57fa\u4e8e Qt \u548c Spyder\u3002\n\u5b98\u7f51\n\n\npythonlibs\uff1a\u975e\u5b98\u65b9\u7684 Windows \u5e73\u53f0 Python \u6269\u5c55\u4e8c\u8fdb\u5236\u5305\u3002\n\u5b98\u7f51\n\n\nPythonNet\uff1aPython \u4e0e .NET \u516c\u5171\u8bed\u8a00\u8fd0\u884c\u5e93 (CLR)\u7684\u96c6\u6210\u3002\n\u5b98\u7f51\n\n\nPyWin32\uff1a\u9488\u5bf9 Windows \u7684 Python \u6269\u5c55\u3002\n\u5b98\u7f51\n\n\nWinPython\uff1aWindows 7/8 \u7cfb\u7edf\u4e0b\u4fbf\u643a\u5f0f\u5f00\u53d1\u73af\u5883\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f51\u7edc\u53ef\u89c6\u5316\u548c SDN\n\n\n\u7528\u6765\u8fdb\u884c\u7f51\u7edc\u53ef\u89c6\u5316\u548c SDN(\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc)\u7684\u5de5\u5177\u548c\u5e93\u3002\n\n\n\n\nMininet\uff1a\u4e00\u6b3e\u6d41\u884c\u7684\u7f51\u7edc\u6a21\u62df\u5668\u4ee5\u53ca\u7528 Python \u7f16\u5199\u7684 API\u3002\n\u5b98\u7f51\n\n\nPOX\uff1a\u4e00\u4e2a\u9488\u5bf9\u57fa\u4e8e Python \u7684\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc\u5e94\u7528\uff08\u4f8b\u5982 OpenFlow SDN \u63a7\u5236\u5668\uff09\u7684\u5f00\u6e90\u5f00\u53d1\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nPyretic\uff1a\u706b\u70ed\u7684 SDN \u7f16\u7a0b\u8bed\u8a00\u4e2d\u7684\u4e00\u5458\uff0c\u4e3a\u7f51\u7edc\u4ea4\u6362\u673a\u548c\u6a21\u62df\u5668\u63d0\u4f9b\u5f3a\u5927\u7684\u62bd\u8c61\u80fd\u529b\u3002\n\u5b98\u7f51\n\n\nSDX Platform\uff1a\u57fa\u4e8e SDN \u7684 IXP \u5b9e\u73b0\uff0c\u5f71\u54cd\u4e86 Mininet, POX \u548c Pyretic\u3002\n\u5b98\u7f51\n\n\nNRU\uff1a\u4e00\u4e2a\u57fa\u4e8e\u7ec4\u4ef6\u7684\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u786c\u4ef6\n\n\n\u7528\u6765\u5bf9\u786c\u4ef6\u8fdb\u884c\u7f16\u7a0b\u7684\u5e93\u3002\n\n\n\n\nino\uff1a\u64cd\u4f5c \nArduino\n \u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n \n\n\nPyro\uff1aPython \u673a\u5668\u4eba\u7f16\u7a0b\u5e93\u3002\n\u5b98\u7f51\n\n\nPyUserInput\uff1a\u8de8\u5e73\u53f0\u7684\uff0c\u63a7\u5236\u9f20\u6807\u548c\u952e\u76d8\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nscapy\uff1a\u4e00\u4e2a\u975e\u5e38\u68d2\u7684\u64cd\u4f5c\u6570\u636e\u5305\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nwifi\uff1a\u4e00\u4e2a Python \u5e93\u548c\u547d\u4ee4\u884c\u5de5\u5177\u7528\u6765\u5728 Linux \u5e73\u53f0\u4e0a\u64cd\u4f5c WiFi\u3002\n\u5b98\u7f51\n\n\nPingo\uff1aPingo \u4e3a\u7c7b\u4f3c Raspberry Pi\uff0cpcDuino\uff0c Intel Galileo \u7b49\u8bbe\u5907\u63d0\u4f9b\u7edf\u4e00\u7684 API \u7528\u4ee5\u7f16\u7a0b\u3002\n\u5b98\u7f51\n\n\n\n\n\u517c\u5bb9\u6027\n\n\n\u5e2e\u52a9\u4ece Python 2 \u5411 Python 3 \u8fc1\u79fb\u7684\u5e93\u3002\n\n\n\n\nPython-Future\uff1a\u8fd9\u5c31\u662f Python 2 \u548c Python 3 \u4e4b\u95f4\u4e22\u5931\u7684\u90a3\u4e2a\u517c\u5bb9\u6027\u5c42\u3002\n\u5b98\u7f51\n\n\nPython-Modernize\uff1a\u4f7f Python \u4ee3\u7801\u66f4\u52a0\u73b0\u4ee3\u5316\u4ee5\u4fbf\u6700\u7ec8\u8fc1\u79fb\u5230 Python 3\u3002\n\u5b98\u7f51\n\n\nSix\uff1aPython 2 \u548c 3 \u7684\u517c\u5bb9\u6027\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u6742\u9879\n\n\n\u4e0d\u5c5e\u4e8e\u4e0a\u9762\u4efb\u4f55\u4e00\u4e2a\u7c7b\u522b\uff0c\u4f46\u662f\u975e\u5e38\u6709\u7528\u7684\u5e93\u3002\n\n\n\n\nblinker\uff1a\u4e00\u4e2a\u5feb\u901f\u7684 Python \u8fdb\u7a0b\u5185\u4fe1\u53f7/\u4e8b\u4ef6\u5206\u53d1\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nitsdangerous\uff1a\u4e00\u7cfb\u5217\u8f85\u52a9\u5de5\u5177\u7528\u6765\u5c06\u53ef\u4fe1\u7684\u6570\u636e\u4f20\u5165\u4e0d\u53ef\u4fe1\u7684\u73af\u5883\u3002\n\u5b98\u7f51\n\n\npluginbase\uff1a\u4e00\u4e2a\u7b80\u5355\u4f46\u662f\u975e\u5e38\u7075\u6d3b\u7684 Python \u63d2\u4ef6\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nPychievements\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u548c\u8ffd\u8e2a\u6210\u5c31\u7684 Python \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nTryton\n\uff1a\u4e00\u4e2a\u901a\u7528\u5546\u52a1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u7b97\u6cd5\u548c\u8bbe\u8ba1\u6a21\u5f0f\n\n\nPython \u5b9e\u73b0\u7684\u7b97\u6cd5\u548c\u8bbe\u8ba1\u6a21\u5f0f\u3002\n\n\n\n\nalgorithms\n\uff1a\u4e00\u4e2a Python \u7b97\u6cd5\u6a21\u5757\u3002\n\u5b98\u7f51\n \n\n\npython-patterns\uff1aPython \u8bbe\u8ba1\u6a21\u5f0f\u7684\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nsortedcontainers\uff1a\u5feb\u901f\uff0c\u7eaf Python \u5b9e\u73b0\u7684 SortedList\uff0cSortedDict \u548c SortedSet \u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f16\u8f91\u5668\u63d2\u4ef6\n\n\n\u7f16\u8f91\u5668\u548c IDE \u7684\u63d2\u4ef6\n\n\n\n\nEmacs\n\n\nElpy\uff1aEmacs Python \u5f00\u53d1\u73af\u5883\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nSublime Text\n\n\nSublimeJEDI\uff1a\u4e00\u4e2a Sublime Text \u63d2\u4ef6\uff0c\u7528\u6765\u4f7f\u7528\u8d85\u8d5e\u7684\u81ea\u52a8\u8865\u5168\u5e93 Jedi\u3002\n\u5b98\u7f51\n\n\nAnaconda\uff1aAnaconda \u628a\u4f60\u7684 Sublime Text 3 \u53d8\u6210\u4e00\u4e2a\u529f\u80fd\u9f50\u5168\u7684 Python IDE\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nVim\n\n\nYouCompleteMe\n\uff1a\u5f15\u5165\u57fa\u4e8e \nJedi\n \u7684 Python \u81ea\u52a8\u8865\u5168\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\nJedi-vim\uff1a\u7ed1\u5b9a Vim \u548c Jedi \u81ea\u52a8\u8865\u5168\u5e93\u5bf9 Python \u8fdb\u884c\u81ea\u52a8\u8865\u5168\u3002\n\u5b98\u7f51\n\n\nPython-mode\uff1a\u5c06 Vim \u53d8\u6210 Python IDE \u7684\u4e00\u6b3e\u591a\u5408\u4e00\u63d2\u4ef6\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nVisual Studio\n\n\nPTVS\uff1aVisual Studio \u7684 Python \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u96c6\u6210\u5f00\u53d1\u73af\u5883\n\n\n\u6d41\u884c\u7684 Python \u96c6\u6210\u5f00\u53d1\u73af\u5883\u3002\n\n\n\n\nPyCharm\uff1a\u5546\u4e1a\u5316\u7684 Python IDE \uff0c\u7531 JetBrains \u5f00\u53d1\u3002\u4e5f\u6709\u514d\u8d39\u7684\u793e\u533a\u7248\u63d0\u4f9b\u3002\n\u5b98\u7f51\n\n\nLiClipse\uff1a\u57fa\u4e8e Eclipse \u7684\u514d\u8d39\u591a\u8bed\u8a00 IDE \u3002\u4f7f\u7528 PyDev \u6765\u652f\u6301 Python \u3002\n\u5b98\u7f51\n\n\nSpyder\uff1a\u5f00\u6e90 Python IDE\u3002\n\u5b98\u7f51\n\n\n\n\n\u81ea\u52a8\u804a\u5929\u5de5\u5177\n\n\n\u7528\u4e8e\u5f00\u53d1\u804a\u5929\u673a\u5668\u4eba\u7684\u5e93\n\n\n\n\nErrbot\uff1a\u6700\u7b80\u5355\u548c\u6700\u6d41\u884c\u7684\u804a\u5929\u673a\u5668\u4eba\u7528\u6765\u5b9e\u73b0\u81ea\u52a8\u804a\u5929\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u670d\u52a1\n\n\n\u5728\u7ebf\u5de5\u5177\u548c\u7b80\u5316\u5f00\u53d1\u7684 API \u3002\n\n\n\u91d1\u878d\u6570\u636e\n\n\n\n\nTushare \uff1a\u4e00\u4e2a\u53ef\u4ee5\u63d0\u4f9b\u514d\u8d39\u80a1\u7968\u3001\u57fa\u91d1\u3001\u671f\u8d27\u3001\u6e2f\u80a1\u7b49\u91d1\u878d\u6570\u636e\u7684 Python \u5f00\u6e90\u6570\u636e\u3002\n\u5b98\u7f51\n\n\nTa-Lib \uff1a\u91d1\u878d\u6570\u636e\u6280\u672f\u5206\u6790\u5e93\uff0c\u53ef\u4ee5\u4f9d\u636e\u539f\u59cb\u91d1\u878d\u6570\u636e\u8ba1\u7b97\u5404\u79cd\u6280\u672f\u6307\u6807,\u8ba1\u7b97\u6027\u80fd\u6bd4\u8f83\u4f18\u5f02\u3002\n\u5b98\u7f51\n\n\n\n\n\u6301\u7eed\u96c6\u6210\n\n\n\u53c2\u89c1: \nawesome-CIandCD\n.\n\n\n\n\nTravis CI\uff1a\u4e00\u4e2a\u6d41\u884c\u7684\u5de5\u5177\uff0c\u4e3a\u4f60\u7684\u5f00\u6e90\u548c \n\u79c1\u4eba\n \u9879\u76ee\u63d0\u4f9b\u6301\u7eed\u96c6\u6210\u670d\u52a1\u3002(\u4ec5\u652f\u6301 GitHub)\n\u5b98\u7f51\n\n\nCircleCI\uff1a\u4e00\u4e2a\u6301\u7eed\u96c6\u6210\u5de5\u5177\uff0c\u53ef\u4ee5\u975e\u5e38\u5feb\u901f\u7684\u8fdb\u884c\u5e76\u884c\u6d4b\u8bd5\u3002 (\u4ec5\u652f\u6301 GitHub)\n\u5b98\u7f51\n\n\nVexor CI\uff1a\u4e00\u4e2a\u4e3a\u79c1\u4eba app \u63d0\u4f9b\u6301\u7eed\u96c6\u6210\u7684\u5de5\u5177\uff0c\u652f\u6301\u6309\u5206\u949f\u4ed8\u8d39\u3002\n\u5b98\u7f51\n\n\nWercker\uff1a\u57fa\u4e8e Docker \u5e73\u53f0\uff0c\u7528\u6765\u6784\u5efa\u548c\u90e8\u7f72\u5fae\u670d\u52a1\u3002\n\u5b98\u7f51\n\n\n\n\n\u4ee3\u7801\u8d28\u91cf\n\n\n\n\nCodacy\uff1a\u81ea\u52a8\u5316\u4ee3\u7801\u5ba1\u67e5\uff0c\u66f4\u52a0\u5feb\u901f\u7684\u53d1\u5e03\u9ad8\u8d28\u91cf\u4ee3\u7801\u3002\u5bf9\u4e8e\u5f00\u6e90\u9879\u76ee\u662f\u514d\u8d39\u7684\u3002\n\u5b98\u7f51\n\n\nQuantifiedCode\uff1a\u4e00\u4e2a\u6570\u636e\u9a71\u52a8\u3001\u81ea\u52a8\u3001\u6301\u7eed\u7684\u4ee3\u7801\u5ba1\u67e5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u8d44\u6e90\n\n\n\u5728\u8fd9\u91cc\u53ef\u4ee5\u627e\u5230\u65b0\u7684 Python \u5e93\u3002\n\n\n\u7f51\u7ad9\n\n\n\n\nr/Python\n\n\nCoolGithubProjects\n\n\nDjango Packages\n\n\nFull Stack Python\n\n\nPython 3 Wall of Superpowers\n\n\nPython Hackers\n\n\nPython ZEEF\n\n\nTrending Python repositories on GitHub today\n\n\nPyPI Ranking\n\n\n\n\n\u5468\u520a\n\n\n\n\nImport Python Newsletter\n\n\nPycoder's Weekly\n\n\nPython Weekly\n\n\n\n\nTwitter\n\n\n\n\n@codetengu\n\n\n@getpy\n\n\n@planetpython\n\n\n@pycoders\n\n\n@pypi\n\n\n@pythontrending\n\n\n@PythonWeekly\n\n\n\n\n\u5b66\u4e60\u6307\u5357\n\n\n\n\nScipy-lecture-notes\n\uff1a\u5982\u4f55\u7528 Python \u6765\u505a\u5b66\u672f\uff1f\n\u5b98\u7f51\n\n\nSScientific-python-lectures\n\uff1aPython \u79d1\u5b66\u8ba1\u7b97\u7684\u8d44\u6599\u3002\n\u5b98\u7f51\n\n\nMario-Level-1\n\uff1a\u7528 Python \u548c Pygame \u5199\u7684\u8d85\u7ea7\u9a6c\u91cc\u5965\u7b2c\u4e00\u5173\u3002\n\u5b98\u7f51\n\n\nPython Koans\n\uff1aPython \u7684\u4ea4\u4e92\u5f0f\u5b66\u4e60\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nMinecraft\n\uff1a\u7528 python \u5199\u7684 Minecraft \u6e38\u620f\u3002\n\u5b98\u7f51\n\n\npycrumbs\n\uff1aPython \u8d44\u6e90\u5927\u5168\u3002\n\u5b98\u7f51\n\n\npython-patterns\n\uff1a\u4f7f\u7528 python \u5b9e\u73b0\u8bbe\u8ba1\u6a21\u5f0f\u3002\n\u5b98\u7f51\n\n\nProjects\n\uff1aPython \u9879\u76ee\u5927\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nThe Hitchhiker\u2019s Guide to Python\n\uff1a\u65c5\u884c\u8005\u7684 Python \u5b66\u4e60\u6307\u5357\u3002\n\u5b98\u7f51\n\n\nCode Like a Pythonista: Idiomatic Python\n\uff1a\u5982\u4f55\u50cf Python \u9ad8\u624b(Pythonista)\u4e00\u6837\u7f16\u7a0b\u3002\n\u5b98\u7f51\n\n\n\n\n\u77e5\u540d\u7f51\u7ad9\n\n\n\n\u503c\u5f97\u5173\u6ce8\u7684 Python \u6280\u672f\u7ad9\u70b9\u3002\n\n\n\u4e2d\u6587\u7ad9\u70b9\n\n\n\n\n\n\u4f2f\u4e50\u5728\u7ebf Python \u9891\u9053\uff1a\u5206\u4eab Python \u5f00\u53d1\u6280\u672f\u3001\u76f8\u5173\u7684\u884c\u4e1a\u52a8\u6001\u3002\n\u5b98\u7f51\n\n\n\n\n\u82f1\u6587\u7ad9\u70b9\n\n\n\n\n\n\u300a\n\u503c\u5f97\u5173\u6ce8\u7684 10 \u4e2a Python \u82f1\u6587\u535a\u5ba2\n\u300b\n\n\n\n\n\u5fae\u535a\u3001\u5fae\u4fe1\u516c\u4f17\u53f7\n\n\n\n\n\nPython\u5f00\u53d1\u8005 \u5fae\u535a\uff1a\n@Python\u5f00\u53d1\u8005\n\n\nPython\u5f00\u53d1\u8005\uff1a\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528 Python\u3002Python \u8d8a\u6765\u8d8a\u53d7\u5e7f\u5927\u7a0b\u5e8f\u5458\u7684\u559c\u7231\u3002\u300cPython\u5f00\u53d1\u8005\u300d\u662f\u6700\u53d7\u6b22\u8fce\u7684\u3001\u4e13\u6ce8\u5206\u4eab Python \u6280\u672f\u7684\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u4e3b\u8981\u5206\u4eab Python \u76f8\u5173\u7684\u6280\u672f\u6587\u7ae0\u3001\u5de5\u5177\u8d44\u6e90\u548c\u8d44\u8baf\u7b49\u3002",
"title": "\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528 Python"
},
{
"location": "/#python",
"text": "\u6211\u60f3\u5f88\u591a\u7a0b\u5e8f\u5458\u5e94\u8be5\u8bb0\u5f97 GitHub \u4e0a\u6709\u4e00\u4e2a Awesome - XXX \u7cfb\u5217\u7684\u8d44\u6e90\u6574\u7406\u3002 awesome-python \u662f vinta \u53d1\u8d77\u7ef4\u62a4\u7684 Python \u8d44\u6e90\u5217\u8868\uff0c\u5185\u5bb9\u5305\u62ec\uff1aWeb \u6846\u67b6\u3001\u7f51\u7edc\u722c\u866b\u3001\u7f51\u7edc\u5185\u5bb9\u63d0\u53d6\u3001\u6a21\u677f\u5f15\u64ce\u3001\u6570\u636e\u5e93\u3001\u6570\u636e\u53ef\u89c6\u5316\u3001\u56fe\u7247\u5904\u7406\u3001\u6587\u672c\u5904\u7406\u3001\u81ea\u7136\u8bed\u8a00\u5904\u7406\u3001\u673a\u5668\u5b66\u4e60\u3001\u65e5\u5fd7\u3001\u4ee3\u7801\u5206\u6790\u7b49\u3002\u7531\u4f2f\u4e50\u5728\u7ebf\u6301\u7eed\u66f4\u65b0\u3002 Awesome \u7cfb\u5217\u867d\u7136\u633a\u5168\uff0c\u4f46\u57fa\u672c\u53ea\u5bf9\u6536\u5f55\u7684\u8d44\u6e90\u505a\u4e86\u6781\u4e3a\u7b80\u8981\u7684\u4ecb\u7ecd\uff0c\u5982\u679c\u6709\u66f4\u8be6\u7ec6\u7684\u4e2d\u6587\u4ecb\u7ecd\uff0c\u5bf9\u76f8\u5e94\u5f00\u53d1\u8005\u7684\u5e2e\u52a9\u4f1a\u66f4\u5927\u3002\u8fd9\u4e5f\u662f\u6211\u4eec\u53d1\u8d77\u8fd9\u4e2a\u5f00\u6e90\u9879\u76ee\u7684\u521d\u8877\u3002",
"title": "Python \u8d44\u6e90\u5927\u5168\u4e2d\u6587\u7248"
},
{
"location": "/#_1",
"text": "",
"title": "\u5173\u4e8e\u9879\u76ee"
},
{
"location": "/#_2",
"text": "\u57fa\u4e8e awesome-python \u5217\u8868\uff0c\u6211\u4eec\u5c06\u5bf9\u5176\u4e2d\u7684\u5404\u4e2a\u8d44\u6e90\u9879\u8fdb\u884c\u7f16\u8bd1\u6574\u7406\u3002\u6b64\u5916\u8fd8\u5c06\u4ece\u5176\u4ed6\u6765\u6e90\u8865\u5145\u597d\u8d44\u6e90\u3002 \u6574\u7406\u540e\u7684\u5185\u5bb9\uff0c\u5c06\u6536\u5f55\u5728 \u4f2f\u4e50\u5728\u7ebf\u8d44\u6e90\u9891\u9053 \u3002\u53ef\u53c2\u8003\u5df2\u6574\u7406\u7684\u5185\u5bb9\uff1a \u300a Scrapy\uff1aPython \u7684\u722c\u866b\u6846\u67b6 \u300b \u300a Flask\uff1a\u4e00\u4e2a\u4f7f\u7528 Python \u7f16\u5199\u7684\u8f7b\u91cf\u7ea7 Web \u5e94\u7528\u6846\u67b6 \u300b",
"title": "\u6211\u4eec\u8981\u505a\u4ec0\u4e48\uff1f"
},
{
"location": "/#_3",
"text": "\u6b22\u8fce\u5927\u5bb6\u4e3a\u5217\u8868\u8d21\u732e\u9ad8\u8d28\u91cf\u7684\u65b0\u8d44\u6e90\uff0c\u63d0\u4ea4 PR \u65f6\u8bf7\u53c2\u7167\u4ee5\u4e0b\u8981\u6c42\uff1a \u8bf7\u786e\u4fdd\u63a8\u8350\u7684\u8d44\u6e90\u81ea\u5df1\u4f7f\u7528\u8fc7 \u63d0\u4ea4 PR \u65f6\u8bf7\u6ce8\u660e\u63a8\u8350\u7406\u7531 \u8d44\u6e90\u5217\u8868\u7ba1\u7406\u6536\u5230 PR \u8bf7\u6c42\u540e\uff0c\u4f1a\u5b9a\u671f\uff08\u6bcf\u5468\uff09\u5728\u5fae\u535a\u8f6c\u53d1\u672c\u5468\u63d0\u4ea4\u7684 PR \u5217\u8868\uff0c\u5e76\u5728\u5fae\u535a\u4e0a\u9762\u542c\u53d6\u4f7f\u7528\u8fc7\u8fd9\u4e9b\u8d44\u6e90\u7684\u610f\u89c1\u3002\u786e\u8ba4\u901a\u8fc7\u540e\uff0c\u4f1a\u52a0\u5165\u8d44\u6e90\u5927\u5168\u3002 \u611f\u8c22\u60a8\u7684\u8d21\u732e\uff01",
"title": "\u5982\u4f55\u4e3a\u5217\u8868\u8d21\u732e\u65b0\u8d44\u6e90\uff1f"
},
{
"location": "/#_4",
"text": "\u7ef4\u62a4\u8005\uff1a \u8d21\u732e\u8005\uff1a \u827e\u51cc\u98ce \u3001Namco\u3001 Daetalus \u3001 \u9ec4\u5229\u6c11 \u3001 atupal \u3001 rainbow \u3001 \u6728\u5934lbj \u3001 beyondwu \u3001 cissoid \u3001 \u674e\u5e7f\u80dc \u3001 polyval \u3001 \u51b0\u658c \u3001 \u8d75\u53f6\u5b87 \u3001 \u043b stalgic \u3001 \u7855\u6069 \u3001 strongit \u3001 yuukilp \u3001 chenjiandongx \u3001 autopenguin \u3001 visonforcoding \u3001 Super\u8d5b\u4e9a\u4eba \u3001 Since-future \u3001 knktc \u6ce8\uff1a\u540d\u5355\u4e0d\u5206\u6392\u540d\uff0c\u4e0d\u5b9a\u671f\u8865\u5145\u66f4\u65b0",
"title": "\u672c\u9879\u76ee\u7684\u53c2\u4e0e\u8005"
},
{
"location": "/#_5",
"text": "",
"title": "\u8d44\u6e90\u5217\u8868"
},
{
"location": "/#_6",
"text": "\u7ba1\u7406 Python \u7248\u672c\u548c\u73af\u5883\u7684\u5de5\u5177 p\uff1a\u975e\u5e38\u7b80\u5355\u7684\u4ea4\u4e92\u5f0f python \u7248\u672c\u7ba1\u7406\u5de5\u5177\u3002 \u5b98\u7f51 pyenv\uff1a\u7b80\u5355\u7684 Python \u7248\u672c\u7ba1\u7406\u5de5\u5177\u3002 \u5b98\u7f51 Vex\uff1a\u53ef\u4ee5\u5728\u865a\u62df\u73af\u5883\u4e2d\u6267\u884c\u547d\u4ee4\u3002 \u5b98\u7f51 virtualenv\uff1a\u521b\u5efa\u72ec\u7acb Python \u73af\u5883\u7684\u5de5\u5177\u3002 \u5b98\u7f51 virtualenvwrapper\uff1avirtualenv \u7684\u4e00\u7ec4\u6269\u5c55\u3002 \u5b98\u7f51",
"title": "\u73af\u5883\u7ba1\u7406"
},
{
"location": "/#_7",
"text": "\u7ba1\u7406\u5305\u548c\u4f9d\u8d56\u7684\u5de5\u5177\u3002 pip\uff1aPython \u5305\u548c\u4f9d\u8d56\u5173\u7cfb\u7ba1\u7406\u5de5\u5177\u3002 \u5b98\u7f51 pip-tools\uff1a\u4fdd\u8bc1 Python \u5305\u4f9d\u8d56\u5173\u7cfb\u66f4\u65b0\u7684\u4e00\u7ec4\u5de5\u5177\u3002 \u5b98\u7f51 pipenv\uff1aPyhton \u5b98\u65b9\u63a8\u8350\u7684\u65b0\u4e00\u4ee3\u5305\u7ba1\u7406\u5de5\u5177\u3002 \u5b98\u7f51 conda\uff1a\u8de8\u5e73\u53f0\uff0cPython \u4e8c\u8fdb\u5236\u5305\u7ba1\u7406\u5de5\u5177\u3002 \u5b98\u7f51 Curdling\uff1a\u7ba1\u7406 Python \u5305\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002 \u5b98\u7f51 wheel\uff1aPython \u5206\u53d1\u7684\u65b0\u6807\u51c6\uff0c\u610f\u5728\u53d6\u4ee3 eggs\u3002 \u5b98\u7f51",
"title": "\u5305\u7ba1\u7406"
},
{
"location": "/#_8",
"text": "\u672c\u5730 PyPI \u4ed3\u5e93\u670d\u52a1\u548c\u4ee3\u7406\u3002 warehouse \uff1a\u4e0b\u4e00\u4ee3 PyPI\u3002 \u5b98\u7f51 bandersnatch\uff1aPyPA \u63d0\u4f9b\u7684 PyPI \u955c\u50cf\u5de5\u5177\u3002 \u5b98\u7f51 devpi\uff1aPyPI \u670d\u52a1\u548c\u6253\u5305/\u6d4b\u8bd5/\u5206\u53d1\u5de5\u5177\u3002 \u5b98\u7f51 localshop\uff1a\u672c\u5730 PyPI \u670d\u52a1\uff08\u81ea\u5b9a\u4e49\u5305\u5e76\u4e14\u81ea\u52a8\u5bf9 PyPI \u955c\u50cf\uff09\u3002 \u5b98\u7f51",
"title": "\u5305\u4ed3\u5e93"
},
{
"location": "/#_9",
"text": "\u6253\u5305\u4e3a\u53ef\u6267\u884c\u6587\u4ef6\u4ee5\u4fbf\u5206\u53d1\u3002 PyInstaller\uff1a\u5c06 Python \u7a0b\u5e8f\u8f6c\u6362\u6210\u72ec\u7acb\u7684\u6267\u884c\u6587\u4ef6\uff08\u8de8\u5e73\u53f0\uff09\u3002 \u5b98\u7f51 dh-virtualenv\uff1a\u6784\u5efa\u5e76\u5c06 virtualenv \u865a\u62df\u73af\u5883\u4f5c\u4e3a\u4e00\u4e2a Debian \u5305\u6765\u53d1\u5e03\u3002 \u5b98\u7f51 Nuitka\uff1a\u5c06\u811a\u672c\u3001\u6a21\u5757\u3001\u5305\u7f16\u8bd1\u6210\u53ef\u6267\u884c\u6587\u4ef6\u6216\u6269\u5c55\u6a21\u5757\u3002 \u5b98\u7f51 py2app\uff1a\u5c06 Python \u811a\u672c\u53d8\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u5305\uff08Mac OS X\uff09\u3002 \u5b98\u7f51 py2exe\uff1a\u5c06 Python \u811a\u672c\u53d8\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u5305\uff08Windows\uff09\u3002 \u5b98\u7f51 pynsist\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa Windows \u5b89\u88c5\u7a0b\u5e8f\u7684\u5de5\u5177\uff0c\u53ef\u4ee5\u5728\u5b89\u88c5\u7a0b\u5e8f\u4e2d\u6253\u5305 Python \u672c\u8eab\u3002 \u5b98\u7f51",
"title": "\u5206\u53d1"
},
{
"location": "/#_10",
"text": "\u5c06\u6e90\u7801\u7f16\u8bd1\u6210\u8f6f\u4ef6\u3002 buildout\uff1a\u4e00\u4e2a\u6784\u5efa\u7cfb\u7edf\uff0c\u4ece\u591a\u4e2a\u7ec4\u4ef6\u6765\u521b\u5efa\uff0c\u7ec4\u88c5\u548c\u90e8\u7f72\u5e94\u7528\u3002 \u5b98\u7f51 BitBake\uff1a\u9488\u5bf9\u5d4c\u5165\u5f0f Linux \u7684\u7c7b\u4f3c make \u7684\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 fabricate\uff1a\u5bf9\u4efb\u4f55\u8bed\u8a00\u81ea\u52a8\u627e\u5230\u4f9d\u8d56\u5173\u7cfb\u7684\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 PlatformIO\uff1a\u591a\u5e73\u53f0\u547d\u4ee4\u884c\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 PyBuilder\uff1a\u7eaf Python \u5b9e\u73b0\u7684\u6301\u7eed\u5316\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 SCons\uff1a\u8f6f\u4ef6\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u6784\u5efa\u5de5\u5177"
},
{
"location": "/#_11",
"text": "\u4ea4\u4e92\u5f0f Python \u89e3\u6790\u5668\u3002 IPython\uff1a\u529f\u80fd\u4e30\u5bcc\u7684\u5de5\u5177\uff0c\u975e\u5e38\u6709\u6548\u7684\u4f7f\u7528\u4ea4\u4e92\u5f0f Python\u3002 \u5b98\u7f51 bpython \uff1a\u754c\u9762\u4e30\u5bcc\u7684 Python \u89e3\u6790\u5668\u3002 \u5b98\u7f51 ptpython\uff1a\u9ad8\u7ea7\u4ea4\u4e92\u5f0f Python \u89e3\u6790\u5668\uff0c \u6784\u5efa\u4e8e python-prompt-toolkit \u4e4b\u4e0a\u3002 \u5b98\u7f51",
"title": "\u4ea4\u4e92\u5f0f\u89e3\u6790\u5668"
},
{
"location": "/#_12",
"text": "\u6587\u4ef6\u7ba1\u7406\u548c MIME\uff08\u591a\u7528\u9014\u7684\u7f51\u9645\u90ae\u4ef6\u6269\u5145\u534f\u8bae\uff09\u7c7b\u578b\u68c0\u6d4b\u3002 aiofiles\uff1a\u57fa\u4e8e asyncio\uff0c\u63d0\u4f9b\u6587\u4ef6\u5f02\u6b65\u64cd\u4f5c\u3002 \u5b98\u7f51 imghdr\uff1a\uff08Python \u6807\u51c6\u5e93\uff09\u68c0\u6d4b\u56fe\u7247\u7c7b\u578b\u3002 \u5b98\u7f51 mimetypes\uff1a\uff08Python \u6807\u51c6\u5e93\uff09\u5c06\u6587\u4ef6\u540d\u6620\u5c04\u4e3a MIME \u7c7b\u578b\u3002 \u5b98\u7f51 path.py\uff1a\u5bf9 os.path \u8fdb\u884c\u5c01\u88c5\u7684\u6a21\u5757\u3002 \u5b98\u7f51 pathlib\uff1a\uff08Python3.4+ \u6807\u51c6\u5e93\uff09\u8de8\u5e73\u53f0\u7684\u3001\u9762\u5411\u5bf9\u8c61\u7684\u8def\u5f84\u64cd\u4f5c\u5e93\u3002 \u5b98\u7f51 python-magic\uff1a\u6587\u4ef6\u7c7b\u578b\u68c0\u6d4b\u7684\u7b2c\u4e09\u65b9\u5e93 libmagic \u7684 Python \u63a5\u53e3\u3002 \u5b98\u7f51 Unipath\uff1a\u7528\u9762\u5411\u5bf9\u8c61\u7684\u65b9\u5f0f\u64cd\u4f5c\u6587\u4ef6\u548c\u76ee\u5f55\u3002 \u5b98\u7f51 watchdog\uff1a\u7ba1\u7406\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\u7684 API \u548c shell \u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u6587\u4ef6"
},
{
"location": "/#_13",
"text": "\u64cd\u4f5c\u65e5\u671f\u548c\u65f6\u95f4\u7684\u7c7b\u5e93\u3002 arrow\uff1a\u66f4\u597d\u7684 Python \u65e5\u671f\u65f6\u95f4\u64cd\u4f5c\u7c7b\u5e93\u3002 \u5b98\u7f51 Chronyk\uff1aPython 3 \u7684\u7c7b\u5e93\uff0c\u7528\u4e8e\u89e3\u6790\u624b\u5199\u683c\u5f0f\u7684\u65f6\u95f4\u548c\u65e5\u671f\u3002 \u5b98\u7f51 dateutil\uff1aPython datetime \u6a21\u5757\u7684\u6269\u5c55\u3002 \u5b98\u7f51 delorean\uff1a\u89e3\u51b3 Python \u4e2d\u6709\u5173\u65e5\u671f\u5904\u7406\u7684\u68d8\u624b\u95ee\u9898\u7684\u5e93\u3002 \u5b98\u7f51 maya\uff1a\u4eba\u6027\u5316\u7684\u65f6\u95f4\u5904\u7406\u5e93\u3002 \u5b98\u7f51 moment\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u65f6\u95f4\u548c\u65e5\u671f\u7684 Python \u5e93\u3002\u7075\u611f\u6765\u81ea\u4e8e Moment.js\u3002 \u5b98\u7f51 pendulum\uff1a\u4e00\u4e2a\u6bd4 arrow \u66f4\u5177\u6709\u660e\u786e\u7684\uff0c\u53ef\u9884\u6d4b\u7684\u884c\u4e3a\u7684\u65f6\u95f4\u64cd\u4f5c\u5e93\u3002 \u5b98\u7f51 PyTime\uff1a\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684 Python \u6a21\u5757\uff0c\u7528\u4e8e\u901a\u8fc7\u5b57\u7b26\u4e32\u6765\u64cd\u4f5c\u65e5\u671f/\u65f6\u95f4\u3002 \u5b98\u7f51 pytz\uff1a\u73b0\u4ee3\u4ee5\u53ca\u5386\u53f2\u7248\u672c\u7684\u4e16\u754c\u65f6\u533a\u5b9a\u4e49\u3002\u5c06\u65f6\u533a\u6570\u636e\u5e93\u5f15\u5165 Python\u3002 \u5b98\u7f51 when.py\uff1a\u63d0\u4f9b\u7528\u6237\u53cb\u597d\u7684\u51fd\u6570\u6765\u5e2e\u52a9\u7528\u6237\u8fdb\u884c\u5e38\u7528\u7684\u65e5\u671f\u548c\u65f6\u95f4\u64cd\u4f5c\u3002 \u5b98\u7f51",
"title": "\u65e5\u671f\u548c\u65f6\u95f4"
},
{
"location": "/#_14",
"text": "\u7528\u4e8e\u89e3\u6790\u548c\u64cd\u4f5c\u6587\u672c\u7684\u5e93\u3002 \u901a\u7528 chardet \uff1a\u5b57\u7b26\u7f16\u7801\u68c0\u6d4b\u5668\uff0c\u517c\u5bb9 Python2 \u548c Python3\u3002 \u5b98\u7f51 difflib\uff1a(Python \u6807\u51c6\u5e93)\u5e2e\u52a9\u6211\u4eec\u8fdb\u884c\u5dee\u5f02\u5316\u6bd4\u8f83\u3002 \u5b98\u7f51 ftfy\uff1a\u8ba9 Unicode \u6587\u672c\u66f4\u5b8c\u6574\u66f4\u8fde\u8d2f\u3002 \u5b98\u7f51 fuzzywuzzy\uff1a\u6a21\u7cca\u5b57\u7b26\u4e32\u5339\u914d\u3002 \u5b98\u7f51 Levenshtein\uff1a\u5feb\u901f\u8ba1\u7b97\u7f16\u8f91\u8ddd\u79bb\u4ee5\u53ca\u5b57\u7b26\u4e32\u7684\u76f8\u4f3c\u5ea6\u3002 \u5b98\u7f51 pangu.py\uff1a\u5728\u4e2d\u65e5\u97e9\u8bed\u5b57\u7b26\u548c\u6570\u5b57\u5b57\u6bcd\u4e4b\u95f4\u6dfb\u52a0\u7a7a\u683c\u3002 \u5b98\u7f51 pypinyin\uff1a\u6c49\u5b57\u62fc\u97f3\u8f6c\u6362\u5de5\u5177 Python \u7248\u3002 \u5b98\u7f51 shortuuid\uff1a\u4e00\u4e2a\u751f\u6210\u5668\u5e93\uff0c\u7528\u4ee5\u751f\u6210\u7b80\u6d01\u7684\uff0c\u660e\u767d\u7684\uff0cURL \u5b89\u5168\u7684 UUID\u3002 \u5b98\u7f51 simplejson \uff1aPython \u7684 JSON \u7f16\u7801\u3001\u89e3\u7801\u5668\u3002 \u5b98\u7f51 unidecode\uff1aUnicode \u6587\u672c\u7684 ASCII \u8f6c\u6362\u5f62\u5f0f \u3002 \u5b98\u7f51 uniout\uff1a\u6253\u5370\u53ef\u8bfb\u7684\u5b57\u7b26\uff0c\u800c\u4e0d\u662f\u8f6c\u4e49\u7684\u5b57\u7b26\u4e32\u3002 \u5b98\u7f51 xpinyin\uff1a\u4e00\u4e2a\u7528\u4e8e\u628a\u6c49\u5b57\u8f6c\u6362\u4e3a\u62fc\u97f3\u7684\u5e93\u3002 \u5b98\u7f51 yfiglet-figlet\uff1a pyfiglet -figlet \u7684 Python \u5b9e\u73b0\u3002 flashtext: \u4e00\u4e2a\u9ad8\u6548\u7684\u6587\u672c\u67e5\u627e\u66ff\u6362\u5e93\u3002 \u5b98\u7f51 Slug \u5316 awesome-slugify\uff1a\u4e00\u4e2a Python slug \u5316\u5e93\uff0c\u53ef\u4ee5\u4fdd\u6301 Unicode\u3002 \u5b98\u7f51 python-slugify\uff1aPython slug \u5316\u5e93\uff0c\u53ef\u4ee5\u628a unicode \u8f6c\u5316\u4e3a ASCII\u3002 \u5b98\u7f51 unicode-slugify\uff1a\u4e00\u4e2a slug \u5de5\u5177\uff0c\u53ef\u4ee5\u751f\u6210 unicode slugs ,\u9700\u8981\u4f9d\u8d56 Django \u3002 \u5b98\u7f51 \u89e3\u6790\u5668 phonenumbers\uff1a\u89e3\u6790\uff0c\u683c\u5f0f\u5316\uff0c\u50a8\u5b58\uff0c\u9a8c\u8bc1\u7535\u8bdd\u53f7\u7801\u3002 \u5b98\u7f51 PLY\uff1alex \u548c yacc \u89e3\u6790\u5de5\u5177\u7684 Python \u5b9e\u73b0\u3002 \u5b98\u7f51 Pygments\uff1a\u901a\u7528\u8bed\u6cd5\u9ad8\u4eae\u5de5\u5177\u3002 \u5b98\u7f51 pyparsing\uff1a\u751f\u6210\u901a\u7528\u89e3\u6790\u5668\u7684\u6846\u67b6\u3002 \u5b98\u7f51 python-nameparser\uff1a\u628a\u4e00\u4e2a\u4eba\u540d\u5206\u89e3\u4e3a\u51e0\u4e2a\u72ec\u7acb\u7684\u90e8\u5206\u3002 \u5b98\u7f51 python-user-agents\uff1a\u6d4f\u89c8\u5668 user agent \u89e3\u6790\u5668\u3002 \u5b98\u7f51 sqlparse\uff1a\u4e00\u4e2a\u65e0\u9a8c\u8bc1\u7684 SQL \u89e3\u6790\u5668\u3002 \u5b98\u7f51",
"title": "\u6587\u672c\u5904\u7406"
},
{
"location": "/#_15",
"text": "\u4e00\u4e9b\u7528\u6765\u89e3\u6790\u548c\u64cd\u4f5c\u7279\u6b8a\u6587\u672c\u683c\u5f0f\u7684\u5e93\u3002 \u901a\u7528 tablib\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u4e2d\u8868\u683c\u6570\u636e\u7684\u6a21\u5757\u3002 \u5b98\u7f51 Office Marmir\uff1a\u628a\u8f93\u5165\u7684 Python \u6570\u636e\u7ed3\u6784\u8f6c\u6362\u4e3a\u7535\u5b50\u8868\u5355\u3002 \u5b98\u7f51 openpyxl\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u5199 Excel 2010 xlsx/xlsm/xltx/xltm \u6587\u4ef6\u7684\u5e93\u3002 \u5b98\u7f51 pyexcel\uff1a\u4e00\u4e2a\u63d0\u4f9b\u7edf\u4e00 API\uff0c\u7528\u6765\u8bfb\u5199\uff0c\u64cd\u4f5c Excel \u6587\u4ef6\u7684\u5e93\u3002 \u5b98\u7f51 python-docx\uff1a\u8bfb\u53d6\uff0c\u67e5\u8be2\u4ee5\u53ca\u4fee\u6539 Microsoft Word 2007/2008 docx \u6587\u4ef6\u3002 \u5b98\u7f51 relatorio\uff1a\u6a21\u677f\u5316 OpenDocument \u6587\u4ef6\u3002 \u5b98\u7f51 unoconv\uff1a\u5728 LibreOffice/OpenOffice \u652f\u6301\u7684\u4efb\u610f\u6587\u4ef6\u683c\u5f0f\u4e4b\u95f4\u8fdb\u884c\u8f6c\u6362\u3002 \u5b98\u7f51 XlsxWriter\uff1a\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa Excel .xlsx \u6587\u4ef6\u7684 Python \u6a21\u5757\u3002 \u5b98\u7f51 xlwings\uff1a\u4e00\u4e2a\u4f7f\u5f97\u5728 Excel \u4e2d\u65b9\u4fbf\u8c03\u7528 Python \u7684\u5e93\uff08\u53cd\u4e4b\u4ea6\u7136\uff09\uff0c\u57fa\u4e8e BSD \u534f\u8bae\u3002 \u5b98\u7f51 xlwt \uff1a\u8bfb\u5199 Excel \u6587\u4ef6\u7684\u6570\u636e\u548c\u683c\u5f0f\u4fe1\u606f\u3002 \u5b98\u7f51 / xlrd PDF PDFMiner\uff1a\u4e00\u4e2a\u7528\u4e8e\u4ece PDF \u6587\u6863\u4e2d\u62bd\u53d6\u4fe1\u606f\u7684\u5de5\u5177\u3002 \u5b98\u7f51 PyPDF2\uff1a\u4e00\u4e2a\u53ef\u4ee5\u5206\u5272\uff0c\u5408\u5e76\u548c\u8f6c\u6362 PDF \u9875\u9762\u7684\u5e93\u3002 \u5b98\u7f51 ReportLab\uff1a\u5feb\u901f\u521b\u5efa\u5bcc\u6587\u672c PDF \u6587\u6863\u3002 \u5b98\u7f51 Markdown Mistune\uff1a\u5feb\u901f\u5e76\u4e14\u529f\u80fd\u9f50\u5168\u7684\u7eaf Python \u5b9e\u73b0\u7684 Markdown \u89e3\u6790\u5668\u3002 \u5b98\u7f51 Python-Markdown\uff1aJohn Gruber\u2019s Markdown \u7684 Python \u7248\u5b9e\u73b0\u3002 \u5b98\u7f51 Python-Markdown2\uff1a\u7eaf Python \u5b9e\u73b0\u7684 Markdown \u89e3\u6790\u5668\uff0c\u6bd4 Python-Markdown \u66f4\u5feb\uff0c\u66f4\u51c6\u786e\uff0c\u53ef\u6269\u5c55\u3002 \u5b98\u7f51 YAML PyYAML\uff1aPython \u7248\u672c\u7684 YAML \u89e3\u6790\u5668\u3002 \u5b98\u7f51 CSV csvkit\uff1a\u7528\u4e8e\u8f6c\u6362\u548c\u64cd\u4f5c CSV \u7684\u5de5\u5177\u3002 \u5b98\u7f51 Archive unp\uff1a\u4e00\u4e2a\u7528\u6765\u65b9\u4fbf\u89e3\u5305\u5f52\u6863\u6587\u4ef6\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u7279\u6b8a\u6587\u672c\u683c\u5f0f\u5904\u7406"
},
{
"location": "/#_16",
"text": "\u7528\u6765\u5904\u7406\u4eba\u7c7b\u8bed\u8a00\u7684\u5e93\u3002 NLTK \uff1a\u4e00\u4e2a\u5148\u8fdb\u7684\u5e73\u53f0\uff0c\u7528\u4ee5\u6784\u5efa\u5904\u7406\u4eba\u7c7b\u8bed\u8a00\u6570\u636e\u7684 Python \u7a0b\u5e8f\u3002 \u5b98\u7f51 jieba\uff1a\u4e2d\u6587\u5206\u8bcd\u5de5\u5177\u3002 \u5b98\u7f51 langid.py\uff1a\u72ec\u7acb\u7684\u8bed\u8a00\u8bc6\u522b\u7cfb\u7edf\u3002 \u5b98\u7f51 Pattern\uff1aPython \u7f51\u7edc\u4fe1\u606f\u6316\u6398\u6a21\u5757\u3002 \u5b98\u7f51 SnowNLP\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u4e2d\u6587\u6587\u672c\u7684\u5e93\u3002 \u5b98\u7f51 TextBlob\uff1a\u4e3a\u8fdb\u884c\u666e\u901a\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4efb\u52a1\u63d0\u4f9b\u4e00\u81f4\u7684 API\u3002 \u5b98\u7f51 TextGrocery\uff1a\u4e00\u7b80\u5355\u9ad8\u6548\u7684\u77ed\u6587\u672c\u5206\u7c7b\u5de5\u5177\uff0c\u57fa\u4e8e LibLinear \u548c Jieba\u3002 \u5b98\u7f51 thulac:\u6e05\u534e\u5927\u5b66\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4e0e\u793e\u4f1a\u4eba\u6587\u8ba1\u7b97\u5b9e\u9a8c\u5ba4\u7814\u5236\u63a8\u51fa\u7684\u4e00\u5957\u4e2d\u6587\u8bcd\u6cd5\u5206\u6790\u5de5\u5177\u5305 \u5b98\u7f51",
"title": "\u81ea\u7136\u8bed\u8a00\u5904\u7406"
},
{
"location": "/#_17",
"text": "\u7528\u4ee5\u751f\u6210\u9879\u76ee\u6587\u6863\u7684\u5e93\u3002 Sphinx \uff1aPython \u6587\u6863\u751f\u6210\u5668\u3002 \u5b98\u7f51 awesome-sphinxdoc\uff1a \u5b98\u7f51 MkDocs\uff1a\u5bf9 Markdown \u53cb\u597d\u7684\u6587\u6863\u751f\u6210\u5668\u3002 \u5b98\u7f51 pdoc\uff1a\u4e00\u4e2a\u53ef\u4ee5\u66ff\u6362 Epydoc \u7684\u5e93\uff0c\u53ef\u4ee5\u81ea\u52a8\u751f\u6210 Python \u5e93\u7684 API \u6587\u6863\u3002 \u5b98\u7f51 Pycco\uff1a\u6587\u5b66\u7f16\u7a0b\uff08literate-programming\uff09\u98ce\u683c\u7684\u6587\u6863\u751f\u6210\u5668\u3002 \u5b98\u7f51 readthedocs\uff1a\u4e00\u4e2a\u57fa\u4e8e Sphinx/MkDocs \u7684\u5728\u7ebf\u6587\u6863\u6258\u7ba1\u7cfb\u7edf\uff0c\u5bf9\u5f00\u6e90\u9879\u76ee\u514d\u8d39\u5f00\u653e\u4f7f\u7528\u3002 \u5b98\u7f51",
"title": "\u6587\u6863"
},
{
"location": "/#_18",
"text": "\u7528\u6765\u4fdd\u5b58\u548c\u89e3\u6790\u914d\u7f6e\u7684\u5e93\u3002 config\uff1a logging \u6a21\u5757\u4f5c\u8005\u5199\u7684\u5206\u7ea7\u914d\u7f6e\u6a21\u5757\u3002 \u5b98\u7f51 ConfigObj\uff1aINI \u6587\u4ef6\u89e3\u6790\u5668\uff0c\u5e26\u9a8c\u8bc1\u529f\u80fd\u3002 \u5b98\u7f51 ConfigParser\uff1a(Python \u6807\u51c6\u5e93) INI \u6587\u4ef6\u89e3\u6790\u5668\u3002 \u5b98\u7f51 profig\uff1a\u901a\u8fc7\u591a\u79cd\u683c\u5f0f\u8fdb\u884c\u914d\u7f6e\uff0c\u5177\u6709\u6570\u503c\u8f6c\u6362\u529f\u80fd\u3002 \u5b98\u7f51 python-decouple\uff1a\u5c06\u8bbe\u7f6e\u548c\u4ee3\u7801\u5b8c\u5168\u9694\u79bb\u3002 \u5b98\u7f51",
"title": "\u914d\u7f6e"
},
{
"location": "/#_19",
"text": "\u7528\u4e8e\u521b\u5efa\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u5e93\u3002 \u547d\u4ee4\u884c\u7a0b\u5e8f\u5f00\u53d1 asciimatics\uff1a\u8de8\u5e73\u53f0\uff0c\u5168\u5c4f\u7ec8\u7aef\u5305\uff08\u5373\u9f20\u6807/\u952e\u76d8\u8f93\u5165\u548c\u5f69\u8272\uff0c\u5b9a\u4f4d\u6587\u672c\u8f93\u51fa\uff09\uff0c\u5b8c\u6574\u7684\u590d\u6742\u52a8\u753b\u548c\u7279\u6b8a\u6548\u679c\u7684\u9ad8\u7ea7 API\u3002 \u5b98\u7f51 cement\uff1aPython \u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\u6846\u67b6\u3002 \u5b98\u7f51 click\uff1a\u4e00\u4e2a\u901a\u8fc7\u7ec4\u5408\u7684\u65b9\u5f0f\u6765\u521b\u5efa\u7cbe\u7f8e\u547d\u4ee4\u884c\u754c\u9762\u7684\u5305\u3002 \u5b98\u7f51 cliff\uff1a\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u6846\u67b6\uff0c\u53ef\u4ee5\u521b\u5efa\u5177\u6709\u591a\u5c42\u547d\u4ee4\u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\u3002 \u5b98\u7f51 clint\uff1aPython \u547d\u4ee4\u884c\u7a0b\u5e8f\u5de5\u5177\u3002 \u5b98\u7f51 colorama\uff1a\u8de8\u5e73\u53f0\u5f69\u8272\u7ec8\u7aef\u6587\u672c\u3002 \u5b98\u7f51 docopt\uff1aPython \u98ce\u683c\u7684\u547d\u4ee4\u884c\u53c2\u6570\u89e3\u6790\u5668\u3002 \u5b98\u7f51 Gooey\uff1a\u4e00\u6761\u547d\u4ee4\uff0c\u5c06\u547d\u4ee4\u884c\u7a0b\u5e8f\u53d8\u6210\u4e00\u4e2a GUI \u7a0b\u5e8f\u3002 \u5b98\u7f51 python-prompt-toolkit\uff1a\u4e00\u4e2a\u7528\u4e8e\u6784\u5efa\u5f3a\u5927\u7684\u4ea4\u4e92\u5f0f\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u5e93\u3002 \u5b98\u7f51 python-fire\uff1aGoogle \u51fa\u54c1\u7684\u4e00\u4e2a\u57fa\u4e8e Python \u7c7b\u7684\u6784\u5efa\u547d\u4ee4\u884c\u754c\u9762\u7684\u5e93\u3002 \u5b98\u7f51 Pythonpy \uff1a\u5728\u547d\u4ee4\u884c\u4e2d\u76f4\u63a5\u6267\u884c\u4efb\u4f55 Python \u6307\u4ee4\u3002 \u5b98\u7f51 \u751f\u4ea7\u529b\u5de5\u5177 aws-cli\uff1aAmazon Web Services \u7684\u901a\u7528\u547d\u4ee4\u884c\u754c\u9762\u3002 \u5b98\u7f51 bashplotlib\uff1a\u5728\u7ec8\u7aef\u4e2d\u8fdb\u884c\u57fa\u672c\u7ed8\u56fe\u3002 \u5b98\u7f51 caniusepython3\uff1a\u5224\u65ad\u662f\u54ea\u4e2a\u9879\u76ee\u59a8\u788d\u4f60\u4f60\u79fb\u690d\u5230 Python3\u3002 \u5b98\u7f51 cookiecutter\uff1a\u4ece cookiecutters\uff08\u9879\u76ee\u6a21\u677f\uff09\u521b\u5efa\u9879\u76ee\u7684\u4e00\u4e2a\u547d\u4ee4\u884c\u5de5\u5177\u3002 \u5b98\u7f51 doitlive\uff1a\u4e00\u4e2a\u7528\u6765\u5728\u7ec8\u7aef\u4e2d\u8fdb\u884c\u73b0\u573a\u6f14\u793a\u7684\u5de5\u5177\u3002 \u5b98\u7f51 pyftpdlib\uff1a\u4e00\u4e2a\u901f\u5ea6\u6781\u5feb\u548c\u53ef\u6269\u5c55\u7684 Python FTP \u670d\u52a1\u5e93\u3002 \u5b98\u7f51 howdoi\uff1a\u901a\u8fc7\u547d\u4ee4\u884c\u83b7\u53d6\u5373\u65f6\u7684\u7f16\u7a0b\u95ee\u9898\u89e3\u7b54\u3002 \u5b98\u7f51 httpie\uff1a\u4e00\u4e2a\u547d\u4ee4\u884c HTTP \u5ba2\u6237\u7aef\uff0ccURL \u7684\u66ff\u4ee3\u54c1\uff0c\u6613\u7528\u6027\u66f4\u597d\u3002 \u5b98\u7f51 PathPicker\uff1a\u4ece bash \u8f93\u51fa\u4e2d\u9009\u51fa\u6587\u4ef6\u3002 \u5b98\u7f51 percol\uff1a\u5411 UNIX shell \u4f20\u7edf\u7ba1\u9053\u6982\u5ff5\u4e2d\u52a0\u5165\u4ea4\u4e92\u5f0f\u9009\u62e9\u529f\u80fd\u3002 \u5b98\u7f51 SAWS\uff1a\u4e00\u4e2a\u52a0\u5f3a\u7248\u7684 AWS \u547d\u4ee4\u884c\u3002 \u5b98\u7f51 thefuck\uff1a\u4fee\u6b63\u4f60\u4e4b\u524d\u7684\u547d\u4ee4\u884c\u6307\u4ee4\u3002 \u5b98\u7f51 mycli\uff1a\u4e00\u4e2a MySQL \u547d\u4ee4\u884c\u5ba2\u6237\u7aef\uff0c\u5177\u6709\u81ea\u52a8\u8865\u5168\u548c\u8bed\u6cd5\u9ad8\u4eae\u529f\u80fd\u3002 \u5b98\u7f51 pgcli\uff1aPostgres \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u5177\u6709\u81ea\u52a8\u8865\u5168\u548c\u8bed\u6cd5\u9ad8\u4eae\u529f\u80fd\u3002 \u5b98\u7f51 try\uff1a\u4e00\u4e2a\u4ece\u6765\u6ca1\u6709\u66f4\u7b80\u5355\u7684\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u7528\u6765\u8bd5\u7528 python \u5e93\u3002 \u5b98\u7f51",
"title": "\u547d\u4ee4\u884c\u5de5\u5177"
},
{
"location": "/#_20",
"text": "\u7528\u6765\u8fdb\u884c\u4e0b\u8f7d\u7684\u5e93. s3cmd\uff1a\u4e00\u4e2a\u7528\u6765\u7ba1\u7406 Amazon S3 \u548c CloudFront \u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002 \u5b98\u7f51 s4cmd\uff1a\u8d85\u7ea7 S3 \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u6027\u80fd\u66f4\u52a0\u5f3a\u52b2\u3002 \u5b98\u7f51 you-get\uff1a\u4e00\u4e2a YouTube/Youku/Niconico \u89c6\u9891\u4e0b\u8f7d\u5668\uff0c\u4f7f\u7528 Python3 \u7f16\u5199\u3002 \u5b98\u7f51 youtube-dl\uff1a\u4e00\u4e2a\u5c0f\u5de7\u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\uff0c\u7528\u6765\u4e0b\u8f7d YouTube \u89c6\u9891\u3002 \u5b98\u7f51",
"title": "\u4e0b\u8f7d\u5668"
},
{
"location": "/#_21",
"text": "\u7528\u6765\u64cd\u4f5c\u56fe\u50cf\u7684\u5e93. pillow \uff1aPillow \u662f\u4e00\u4e2a\u66f4\u52a0\u6613\u7528\u7248\u7684 PIL \u3002 \u5b98\u7f51 hmap\uff1a\u56fe\u50cf\u76f4\u65b9\u56fe\u6620\u5c04\u3002 \u5b98\u7f51 imgSeek\uff1a\u4e00\u4e2a\u4f7f\u7528\u89c6\u89c9\u76f8\u4f3c\u6027\u641c\u7d22\u4e00\u7ec4\u56fe\u7247\u96c6\u5408\u7684\u9879\u76ee\u3002 \u5b98\u7f51 nude.py\uff1a\u88f8\u4f53\u68c0\u6d4b\u3002 \u5b98\u7f51 pyBarcode\uff1a\u4e0d\u501f\u52a9 PIL \u5e93\u5728 Python \u7a0b\u5e8f\u4e2d\u751f\u6210\u6761\u5f62\u7801\u3002 \u5b98\u7f51 pygram\uff1a\u7c7b\u4f3c Instagram \u7684\u56fe\u50cf\u6ee4\u955c\u3002 \u5b98\u7f51 python-qrcode\uff1a\u4e00\u4e2a\u7eaf Python \u5b9e\u73b0\u7684\u4e8c\u7ef4\u7801\u751f\u6210\u5668\u3002 \u5b98\u7f51 Quads\uff1a\u57fa\u4e8e\u56db\u53c9\u6811\u7684\u8ba1\u7b97\u673a\u827a\u672f\u3002 \u5b98\u7f51 scikit-image\uff1a\u4e00\u4e2a\u7528\u4e8e\uff08\u79d1\u5b66\uff09\u56fe\u50cf\u5904\u7406\u7684 Python \u5e93\u3002 \u5b98\u7f51 thumbor\uff1a\u4e00\u4e2a\u5c0f\u578b\u56fe\u50cf\u670d\u52a1\uff0c\u5177\u6709\u526a\u88c1\uff0c\u5c3a\u5bf8\u91cd\u8bbe\u548c\u7ffb\u8f6c\u529f\u80fd\u3002 \u5b98\u7f51 wand\uff1a MagickWand \u7684 Python \u7ed1\u5b9a\u3002MagickWand \u662f ImageMagick \u7684 C API \u3002 \u5b98\u7f51 face_recognition\uff1a\u7b80\u5355\u6613\u7528\u7684 python \u4eba\u8138\u8bc6\u522b\u5e93\u3002 \u5b98\u7f51",
"title": "\u56fe\u50cf\u5904\u7406"
},
{
"location": "/#ocr",
"text": "\u5149\u5b66\u5b57\u7b26\u8bc6\u522b\u5e93\u3002 pyocr\uff1aTesseract \u548c Cuneiform \u7684\u4e00\u4e2a\u5c01\u88c5(wrapper)\u3002 \u5b98\u7f51 pytesseract \uff1a Google Tesseract OCR \u7684\u53e6\u4e00\u4e2a\u5c01\u88c5(wrapper)\u3002 \u5b98\u7f51 python-tesseract\uff1a Google Tesseract OCR \u00a0\u7684\u4e00\u4e2a\u5305\u88c5\u7c7b\u3002",
"title": "OCR"
},
{
"location": "/#_22",
"text": "\u7528\u6765\u64cd\u4f5c\u97f3\u9891\u7684\u5e93 audiolazy\uff1aPython \u7684\u6570\u5b57\u4fe1\u53f7\u5904\u7406\u5305\u3002 \u5b98\u7f51 audioread\uff1a\u4ea4\u53c9\u5e93 (GStreamer + Core Audio + MAD + FFmpeg) \u97f3\u9891\u89e3\u7801\u3002 \u5b98\u7f51 beets\uff1a\u4e00\u4e2a\u97f3\u4e50\u5e93\u7ba1\u7406\u5de5\u5177\u53ca MusicBrainz \u6807\u7b7e\u6dfb\u52a0\u5de5\u5177\u3002 \u5b98\u7f51 dejavu\uff1a\u97f3\u9891\u6307\u7eb9\u63d0\u53d6\u548c\u8bc6\u522b\u3002 \u5b98\u7f51 django-elastic-transcoder \uff1aDjango + Amazon Elastic Transcoder \u3002 \u5b98\u7f51 eyeD3\uff1a\u4e00\u4e2a\u7528\u6765\u64cd\u4f5c\u97f3\u9891\u6587\u4ef6\u7684\u5de5\u5177\uff0c\u5177\u4f53\u6765\u8bb2\u5c31\u662f\u5305\u542b ID3 \u5143\u4fe1\u606f\u7684 MP3 \u6587\u4ef6\u3002 \u5b98\u7f51 id3reader\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u53d6 MP3 \u5143\u6570\u636e\u7684 Python \u6a21\u5757\u3002 \u5b98\u7f51 m3u8\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790 m3u8 \u6587\u4ef6\u7684\u6a21\u5757\u3002 \u5b98\u7f51 mutagen\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u97f3\u9891\u5143\u6570\u636e\u7684 Python \u6a21\u5757\u3002 \u5b98\u7f51 pydub\uff1a\u901a\u8fc7\u7b80\u5355\u3001\u7b80\u6d01\u7684\u9ad8\u5c42\u63a5\u53e3\u6765\u64cd\u4f5c\u97f3\u9891\u6587\u4ef6\u3002 \u5b98\u7f51 pyechonest\uff1a Echo Nest API \u7684 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 talkbox\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u6f14\u8bb2/\u4fe1\u53f7\u7684 Python \u5e93\u3002 \u5b98\u7f51 TimeSide\uff1a\u5f00\u6e90 web \u97f3\u9891\u5904\u7406\u6846\u67b6\u3002 \u5b98\u7f51 tinytag\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u53d6 MP3, OGG, FLAC \u4ee5\u53ca Wave \u6587\u4ef6\u97f3\u4e50\u5143\u6570\u636e\u7684\u5e93\u3002 \u5b98\u7f51 mingus\uff1a\u4e00\u4e2a\u9ad8\u7ea7\u97f3\u4e50\u7406\u8bba\u548c\u66f2\u8c31\u5305\uff0c\u652f\u6301 MIDI \u6587\u4ef6\u548c\u56de\u653e\u529f\u80fd\u3002 \u5b98\u7f51",
"title": "\u97f3\u9891"
},
{
"location": "/#video",
"text": "\u7528\u6765\u64cd\u4f5c\u89c6\u9891\u548c GIF \u7684\u5e93\u3002 moviepy\uff1a\u4e00\u4e2a\u7528\u6765\u8fdb\u884c\u57fa\u4e8e\u811a\u672c\u7684\u89c6\u9891\u7f16\u8f91\u6a21\u5757\uff0c\u9002\u7528\u4e8e\u591a\u79cd\u683c\u5f0f\uff0c\u5305\u62ec\u52a8\u56fe GIFs\u3002 \u5b98\u7f51 scikit-video\uff1aSciPy \u89c6\u9891\u5904\u7406\u5e38\u7528\u7a0b\u5e8f\u3002 \u5b98\u7f51",
"title": "Video"
},
{
"location": "/#_23",
"text": "\u5730\u7406\u7f16\u7801\u5730\u5740\u4ee5\u53ca\u7528\u6765\u5904\u7406\u7ecf\u7eac\u5ea6\u7684\u5e93\u3002 GeoDjango\uff1a\u4e16\u754c\u7ea7\u5730\u7406\u56fe\u5f62 web \u6846\u67b6\u3002 \u5b98\u7f51 GeoIP\uff1aMaxMind GeoIP Legacy \u6570\u636e\u5e93\u7684 Python API\u3002 \u5b98\u7f51 geojson\uff1aGeoJSON \u7684 Python \u7ed1\u5b9a\u53ca\u5de5\u5177\u3002 \u5b98\u7f51 geopy\uff1aPython \u5730\u5740\u7f16\u7801\u5de5\u5177\u7bb1\u3002 \u5b98\u7f51 pygeoip\uff1a\u7eaf Python GeoIP API\u3002 \u5b98\u7f51 django-countries\uff1a\u4e00\u4e2a Django \u5e94\u7528\u7a0b\u5e8f\uff0c\u63d0\u4f9b\u7528\u4e8e\u8868\u683c\u7684\u56fd\u5bb6\u9009\u62e9\u529f\u80fd\uff0c\u56fd\u65d7\u56fe\u6807\u9759\u6001\u6587\u4ef6\u4ee5\u53ca\u6a21\u578b\u4e2d\u7684\u56fd\u5bb6\u5b57\u6bb5\u3002 \u5b98\u7f51",
"title": "\u5730\u7406\u4f4d\u7f6e"
},
{
"location": "/#http",
"text": "\u4f7f\u7528 HTTP \u7684\u5e93\u3002 aiohttp\uff1a\u57fa\u4e8e asyncio \u7684\u5f02\u6b65 HTTP \u7f51\u7edc\u5e93\u3002 \u5b98\u7f51 requests\uff1a\u4eba\u6027\u5316\u7684 HTTP \u8bf7\u6c42\u5e93\u3002 \u5b98\u7f51 grequests\uff1arequests \u5e93 + gevent \uff0c\u7528\u4e8e\u5f02\u6b65 HTTP \u8bf7\u6c42. \u5b98\u7f51 httplib2\uff1a\u5168\u9762\u7684 HTTP \u5ba2\u6237\u7aef\u5e93\u3002 \u5b98\u7f51 treq\uff1a\u7c7b\u4f3c requests \u7684 Python API \u6784\u5efa\u4e8e Twisted HTTP \u5ba2\u6237\u7aef\u4e4b\u4e0a\u3002 \u5b98\u7f51 urllib3\uff1a\u4e00\u4e2a\u5177\u6709\u7ebf\u7a0b\u5b89\u5168\u8fde\u63a5\u6c60\uff0c\u652f\u6301\u6587\u4ef6 post\uff0c\u6e05\u6670\u53cb\u597d\u7684 HTTP \u5e93\u3002 \u5b98\u7f51",
"title": "HTTP"
},
{
"location": "/#_24",
"text": "Python \u5b9e\u73b0\u7684\u6570\u636e\u5e93\u3002 pickleDB\uff1a\u4e00\u4e2a\u7b80\u5355\uff0c\u8f7b\u91cf\u7ea7\u952e\u503c\u50a8\u5b58\u6570\u636e\u5e93\u3002 \u5b98\u7f51 PipelineDB\uff1a\u6d41\u5f0f SQL \u6570\u636e\u5e93\u3002 \u5b98\u7f51 TinyDB\uff1a\u4e00\u4e2a\u5fae\u578b\u7684\uff0c\u9762\u5411\u6587\u6863\u578b\u6570\u636e\u5e93\u3002 \u5b98\u7f51 ZODB\uff1a\u4e00\u4e2a Python \u539f\u751f\u5bf9\u8c61\u6570\u636e\u5e93\u3002\u4e00\u4e2a\u952e\u503c\u548c\u5bf9\u8c61\u56fe\u6570\u636e\u5e93\u3002 \u5b98\u7f51",
"title": "\u6570\u636e\u5e93"
},
{
"location": "/#_25",
"text": "\u7528\u6765\u8fde\u63a5\u548c\u64cd\u4f5c\u6570\u636e\u5e93\u7684\u5e93\u3002 MySQL\uff1a awesome-mysql \u7cfb\u5217 aiomysql\uff1a\u57fa\u4e8e asyncio \u7684\u5f02\u6b65 MySQL \u6570\u636e\u5e93\u64cd\u4f5c\u5e93\u3002 \u5b98\u7f51 mysql-python\uff1aPython \u7684 MySQL \u6570\u636e\u5e93\u8fde\u63a5\u5668\u3002 \u5b98\u7f51 ysqlclient\uff1a mysql-python \u5206\u652f\uff0c\u652f\u6301 Python 3\u3002 oursql\uff1a\u4e00\u4e2a\u66f4\u597d\u7684 MySQL \u8fde\u63a5\u5668\uff0c\u652f\u6301\u539f\u751f\u9884\u7f16\u8bd1\u6307\u4ee4\u548c BLOBs\u3002 \u5b98\u7f51 PyMySQL\uff1a\u7eaf Python MySQL \u9a71\u52a8\uff0c\u517c\u5bb9 mysql-python\u3002 \u5b98\u7f51 PostgreSQL psycopg2\uff1aPython \u4e2d\u6700\u6d41\u884c\u7684 PostgreSQL \u9002\u914d\u5668\u3002 \u5b98\u7f51 queries\uff1apsycopg2 \u5e93\u7684\u5c01\u88c5\uff0c\u7528\u6765\u548c PostgreSQL \u8fdb\u884c\u4ea4\u4e92\u3002 \u5b98\u7f51 txpostgres\uff1a\u57fa\u4e8e Twisted \u7684\u5f02\u6b65 PostgreSQL \u9a71\u52a8\u3002 \u5b98\u7f51 \u5176\u4ed6\u5173\u7cfb\u578b\u6570\u636e\u5e93 apsw\uff1a\u53e6\u4e00\u4e2a Python SQLite \u5c01\u88c5\u3002 \u5b98\u7f51 dataset\uff1a\u5728\u6570\u636e\u5e93\u4e2d\u5b58\u50a8 Python \u5b57\u5178 pymssql\uff1a\u4e00\u4e2a\u7b80\u5355\u7684 Microsoft SQL Server \u6570\u636e\u5e93\u63a5\u53e3\u3002 \u5b98\u7f51 NoSQL \u6570\u636e\u5e93 asyncio-redis\uff1a\u57fa\u4e8e asyncio \u7684 redis \u5ba2\u6237\u7aef (PEP 3156)\u3002 \u5b98\u7f51 cassandra-python-driver\uff1aCassandra \u7684 Python \u9a71\u52a8\u3002 \u5b98\u7f51 HappyBase\uff1a\u4e00\u4e2a\u4e3a Apache HBase \u8bbe\u8ba1\u7684\uff0c\u5bf9\u5f00\u53d1\u8005\u53cb\u597d\u7684\u5e93\u3002 \u5b98\u7f51 Plyvel\uff1a\u4e00\u4e2a\u5feb\u901f\u4e14\u529f\u80fd\u4e30\u5bcc\u7684 LevelDB \u7684 Python \u63a5\u53e3\u3002 \u5b98\u7f51 py2neo\uff1aNeo4j restful \u63a5\u53e3\u7684 Python \u5c01\u88c5\u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 pycassa\uff1aCassandra \u7684 Python Thrift \u9a71\u52a8\u3002 \u5b98\u7f51 PyMongo\uff1aMongoDB \u7684\u5b98\u65b9 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 redis-py\uff1aRedis \u7684 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 telephus\uff1a\u57fa\u4e8e Twisted \u7684 Cassandra \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 txRedis\uff1a\u57fa\u4e8e Twisted \u7684 Redis \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51",
"title": "\u6570\u636e\u5e93\u9a71\u52a8"
},
{
"location": "/#orm",
"text": "\u5b9e\u73b0\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\u6216\u6570\u636e\u6620\u5c04\u6280\u672f\u7684\u5e93\u3002 \u5173\u7cfb\u578b\u6570\u636e\u5e93 Django Models\uff1aDjango \u7684\u4e00\u90e8\u5206\u3002 \u5b98\u7f51 SQLAlchemy\uff1aPython SQL \u5de5\u5177\u4ee5\u53ca\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\u5de5\u5177\u3002 \u5b98\u7f51 awesome-sqlalchemy \u7cfb\u5217 Peewee \uff1a\u4e00\u4e2a\u5c0f\u5de7\uff0c\u5bcc\u6709\u8868\u8fbe\u529b\u7684 ORM\u3002 \u5b98\u7f51 PonyORM\uff1a\u63d0\u4f9b\u9762\u5411\u751f\u6210\u5668\u7684 SQL \u63a5\u53e3\u7684 ORM\u3002 \u5b98\u7f51 python-sql\uff1a\u7f16\u5199 Python \u98ce\u683c\u7684 SQL \u67e5\u8be2\u3002 \u5b98\u7f51 NoSQL \u6570\u636e\u5e93 django-mongodb-engine\uff1aDjango MongoDB \u540e\u7aef\u3002 \u5b98\u7f51 PynamoDB\uff1a Amazon DynamoDB \u7684\u4e00\u4e2a Python \u98ce\u683c\u63a5\u53e3\u3002 \u5b98\u7f51 flywheel\uff1aAmazon DynamoDB \u7684\u5bf9\u8c61\u6620\u5c04\u5de5\u5177\u3002 \u5b98\u7f51 MongoEngine\uff1a\u4e00\u4e2a Python \u5bf9\u8c61\u6587\u6863\u6620\u5c04\u5de5\u5177\uff0c\u7528\u4e8e MongoDB\u3002 \u5b98\u7f51 hot-redis\uff1a\u4e3a Redis \u63d0\u4f9b Python \u4e30\u5bcc\u7684\u6570\u636e\u7c7b\u578b\u3002 \u5b98\u7f51 redisco\uff1a\u4e00\u4e2a Python \u5e93\uff0c\u63d0\u4f9b\u53ef\u4ee5\u6301\u7eed\u5b58\u5728\u5728 Redis \u4e2d\u7684\u7b80\u5355\u6a21\u578b\u548c\u5bb9\u5668\u3002 \u5b98\u7f51 \u5176\u4ed6 butterdb\uff1aGoogle Drive \u7535\u5b50\u8868\u683c\u7684 Python ORM\u3002 \u5b98\u7f51",
"title": "ORM"
},
{
"location": "/#web",
"text": "\u5168\u6808 Web \u6846\u67b6\u3002 Django \uff1aPython \u754c\u6700\u6d41\u884c\u7684 web \u6846\u67b6\u3002 \u5b98\u7f51 awesome-django \u7cfb\u5217 Flask \uff1a\u4e00\u4e2a Python \u5fae\u578b\u6846\u67b6\u3002 \u5b98\u7f51 awesome-flask \u7cfb\u5217 pyramid\uff1a\u4e00\u4e2a\u5c0f\u5de7\uff0c\u5feb\u901f\uff0c\u63a5\u5730\u6c14\u7684\u5f00\u6e90 Python web \u6846\u67b6\u3002 awesome-pyramid \u7cfb\u5217 Bottle \uff1a\u4e00\u4e2a\u5feb\u901f\u5c0f\u5de7\uff0c\u8f7b\u91cf\u7ea7\u7684 WSGI \u5fae\u578b web \u6846\u67b6\u3002 \u5b98\u7f51 CherryPy\uff1a\u4e00\u4e2a\u6781\u7b80\u7684 Python web \u6846\u67b6\uff0c\u670d\u4ece HTTP/1.1 \u534f\u8bae\u4e14\u5177\u6709 WSGI \u7ebf\u7a0b\u6c60\u3002 \u5b98\u7f51 TurboGears\uff1a\u4e00\u4e2a\u53ef\u4ee5\u6269\u5c55\u4e3a\u5168\u6808\u89e3\u51b3\u65b9\u6848\u7684\u5fae\u578b\u6846\u67b6\u3002 \u5b98\u7f51 web.py \uff1a\u4e00\u4e2a Python \u7684 web \u6846\u67b6\uff0c\u65e2\u7b80\u5355\uff0c\u53c8\u5f3a\u5927\u3002 \u5b98\u7f51 web2py\uff1a\u4e00\u4e2a\u5168\u6808 web \u6846\u67b6\u548c\u5e73\u53f0\uff0c\u4e13\u6ce8\u4e8e\u7b80\u5355\u6613\u7528\u3002 \u5b98\u7f51 Tornado \uff1a\u4e00\u4e2a web \u6846\u67b6\u548c\u5f02\u6b65\u7f51\u7edc\u5e93\u3002 \u5b98\u7f51 sanic\uff1a\u57fa\u4e8e Python3.5+ \u7684\u5f02\u6b65\u7f51\u7edc\u6846\u67b6\u3002 \u5b98\u7f51",
"title": "Web \u6846\u67b6"
},
{
"location": "/#_26",
"text": "\u5141\u8bb8\u6216\u62d2\u7edd\u7528\u6237\u8bbf\u95ee\u6570\u636e\u6216\u529f\u80fd\u7684\u5e93\u3002 Carteblanche\uff1a\u7ad9\u5728\u7528\u6237\u548c\u8bbe\u8ba1\u8005\u89d2\u5ea6\u5f00\u53d1\u7684\u4e00\u4e2a\u4ee3\u7801\u5bf9\u9f50\u6a21\u5757\uff0c\u5f88\u597d\u5730\u5904\u7406\u4e86\u4ee3\u7801\u5bfc\u822a\u53ca\u6743\u9650\u3002 \u5b98\u7f51 django-guardian\uff1aDjango 1.2+ \u5b9e\u73b0\u4e86\u5355\u4e2a\u5bf9\u8c61\u6743\u9650\u3002 \u5b98\u7f51 django-rules\uff1a\u4e00\u4e2a\u5c0f\u5de7\u4f46\u662f\u5f3a\u5927\u7684\u5e94\u7528\uff0c\u63d0\u4f9b\u5bf9\u8c61\u7ea7\u522b\u7684\u6743\u9650\u7ba1\u7406\uff0c\u4e14\u4e0d\u9700\u8981\u4f7f\u7528\u6570\u636e\u5e93\u3002 \u5b98\u7f51",
"title": "\u6743\u9650"
},
{
"location": "/#cms",
"text": "\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf odoo-cms: \u4e00\u4e2a\u5f00\u6e90\u7684\uff0c\u4f01\u4e1a\u7ea7 CMS\uff0c\u57fa\u4e8e odoo\u3002 \u5b98\u7f51 django-cms\uff1a\u4e00\u4e2a\u5f00\u6e90\u7684\uff0c\u4f01\u4e1a\u7ea7 CMS\uff0c\u57fa\u4e8e Django\u3002 \u5b98\u7f51 djedi-cms\uff1a\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u4f46\u5374\u975e\u5e38\u5f3a\u5927\u7684 Django CMS \uff0c\u8003\u8651\u5230\u4e86\u63d2\u4ef6\uff0c\u5185\u8054\u7f16\u8f91\u4ee5\u53ca\u6027\u80fd\u3002 \u5b98\u7f51 FeinCMS\uff1a\u57fa\u4e8e Django \u6784\u5efa\u7684\u6700\u5148\u8fdb\u7684\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\u4e4b\u4e00\u3002 \u5b98\u7f51 Kotti\uff1a\u4e00\u4e2a\u9ad8\u7ea7\u7684\uff0cPython \u8303\u7684 web \u5e94\u7528\u6846\u67b6\uff0c\u57fa\u4e8e Pyramid \u6784\u5efa\u3002 \u5b98\u7f51 Mezzanine\uff1a\u4e00\u4e2a\u5f3a\u5927\u7684\uff0c\u6301\u7eed\u7684\uff0c\u7075\u6d3b\u7684\u5185\u5bb9\u7ba1\u7406\u5e73\u53f0\u3002 \u5b98\u7f51 Opps\uff1a\u4e00\u4e2a\u4e3a\u6742\u5fd7\uff0c\u62a5\u7eb8\u7f51\u7ad9\u4ee5\u53ca\u5927\u6d41\u91cf\u95e8\u6237\u7f51\u7ad9\u8bbe\u8ba1\u7684 CMS \u5e73\u53f0\uff0c\u57fa\u4e8e Django\u3002 \u5b98\u7f51 Plone\uff1a\u4e00\u4e2a\u6784\u5efa\u4e8e\u5f00\u6e90\u5e94\u7528\u670d\u52a1\u5668 Zope \u4e4b\u4e0a\u7684 CMS\u3002 \u5b98\u7f51 Quokka\uff1a\u7075\u6d3b\uff0c\u53ef\u6269\u5c55\u7684\u5c0f\u578b CMS\uff0c\u57fa\u4e8e Flask \u548c MongoDB\u3002 \u5b98\u7f51 Wagtail \uff1a\u4e00\u4e2a Django \u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\u3002 \u5b98\u7f51 Widgy\uff1a\u6700\u65b0\u7684 CMS \u6846\u67b6\uff0c\u57fa\u4e8e Django\u3002 \u5b98\u7f51",
"title": "CMS"
},
{
"location": "/#_27",
"text": "\u7528\u4e8e\u7535\u5b50\u5546\u52a1\u4ee5\u53ca\u652f\u4ed8\u7684\u6846\u67b6\u548c\u5e93\u3002 django-oscar\uff1a\u4e00\u4e2a\u7528\u4e8e Django \u7684\u5f00\u6e90\u7684\u7535\u5b50\u5546\u52a1\u6846\u67b6\u3002 \u5b98\u7f51 django-shop\uff1a\u4e00\u4e2a\u57fa\u4e8e Django \u7684\u5e97\u94fa\u7cfb\u7edf\u3002 \u5b98\u7f51 Cartridge\uff1a\u4e00\u4e2a\u57fa\u4e8e Mezzanine \u6784\u5efa\u7684\u8d2d\u7269\u8f66\u5e94\u7528\u3002 \u5b98\u7f51 shoop\uff1a\u4e00\u4e2a\u57fa\u4e8e Django \u7684\u5f00\u6e90\u7535\u5b50\u5546\u52a1\u5e73\u53f0\u3002 \u5b98\u7f51 alipay\uff1a\u975e\u5b98\u65b9\u7684 Python \u652f\u4ed8\u5b9d API\u3002 \u5b98\u7f51 merchant\uff1a\u4e00\u4e2a\u53ef\u4ee5\u63a5\u6536\u6765\u81ea\u591a\u79cd\u652f\u4ed8\u5e73\u53f0\u652f\u4ed8\u7684 Django \u5e94\u7528\u3002 \u5b98\u7f51 money\uff1a\u4e00\u4e2a\u8d27\u5e01\u7c7b\u5e93\u3002\u5e26\u6709\u53ef\u9009\u7684 CLDR \u540e\u7aef\u672c\u5730\u5316\u683c\u5f0f\uff0c\u63d0\u4f9b\u53ef\u6269\u5c55\u7684\u8d27\u5e01\u5151\u6362\u89e3\u51b3\u65b9\u6848\u3002 \u5b98\u7f51 python-currencies\uff1a\u663e\u793a\u8d27\u5e01\u683c\u5f0f\u4ee5\u53ca\u5b83\u7684\u6570\u503c\u3002 \u5b98\u7f51",
"title": "\u7535\u5b50\u5546\u52a1"
},
{
"location": "/#restful-api",
"text": "\u7528\u6765\u5f00\u53d1 RESTful APIs \u7684\u5e93 Django django-rest-framework \uff1a\u4e00\u4e2a\u5f3a\u5927\u7075\u6d3b\u7684\u5de5\u5177\uff0c\u7528\u6765\u6784\u5efa web API\u3002 \u5b98\u7f51 django-tastypie\uff1a\u4e3a Django \u5e94\u7528\u5f00\u53d1 API\u3002 \u5b98\u7f51 django-formapi\uff1a\u4e3a Django \u7684\u8868\u5355\u9a8c\u8bc1\uff0c\u521b\u5efa JSON APIs \u3002 \u5b98\u7f51 Flask flask-api\uff1a\u4e3a flask \u5f00\u53d1\u7684\uff0c\u53ef\u6d4f\u89c8 Web APIs \u3002 \u5b98\u7f51 flask-restful\uff1a\u4e3a flask \u5feb\u901f\u521b\u5efa REST APIs \u3002 \u5b98\u7f51 flask-restless\uff1a\u4e3a SQLAlchemy \u5b9a\u4e49\u7684\u6570\u636e\u5e93\u6a21\u578b\u521b\u5efa RESTful APIs \u3002 \u5b98\u7f51 flask-api-utils\uff1a\u4e3a Flask \u5904\u7406 API \u8868\u793a\u548c\u9a8c\u8bc1\u3002 \u5b98\u7f51 eve\uff1aREST API \u6846\u67b6\uff0c\u7531 Flask, MongoDB \u7b49\u9a71\u52a8\u3002 \u5b98\u7f51 Pyramid cornice\uff1a\u4e00\u4e2a Pyramid \u7684 REST \u6846\u67b6 \u3002 \u5b98\u7f51 \u4e0e\u6846\u67b6\u65e0\u5173\u7684 falcon\uff1a\u4e00\u4e2a\u7528\u6765\u5efa\u7acb\u4e91 API \u548c web app \u540e\u7aef\u7684\u9ad8\u6027\u80fd\u6846\u67b6\u3002 \u5b98\u7f51 sandman\uff1a\u4e3a\u73b0\u5b58\u7684\u6570\u636e\u5e93\u9a71\u52a8\u7cfb\u7edf\u81ea\u52a8\u521b\u5efa REST APIs \u3002 \u5b98\u7f51 restless\uff1a\u6846\u67b6\u65e0\u5173\u7684 REST \u6846\u67b6 \uff0c\u57fa\u4e8e\u4ece Tastypie \u5b66\u5230\u7684\u77e5\u8bc6\u3002 \u5b98\u7f51 ripozo\uff1a\u5feb\u901f\u521b\u5efa REST/HATEOAS/Hypermedia APIs\u3002 \u5b98\u7f51",
"title": "RESTful API"
},
{
"location": "/#_28",
"text": "\u5b9e\u73b0\u9a8c\u8bc1\u65b9\u6848\u7684\u5e93\u3002 OAuth Authomatic\uff1a\u7b80\u5355\u4f46\u662f\u5f3a\u5927\u7684\u6846\u67b6\uff0c\u8eab\u4efd\u9a8c\u8bc1/\u6388\u6743\u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 django-allauth\uff1aDjango \u7684\u9a8c\u8bc1\u5e94\u7528\u3002 \u5b98\u7f51 django-oauth-toolkit\uff1a\u4e3a Django \u7528\u6237\u51c6\u5907\u7684 OAuth2\u3002 \u5b98\u7f51 django-oauth2-provider\uff1a\u4e3a Django \u5e94\u7528\u63d0\u4f9b OAuth2 \u63a5\u5165\u3002 \u5b98\u7f51 Flask-OAuthlib\uff1aOAuth 1.0/a, 2.0 \u5ba2\u6237\u7aef\u5b9e\u73b0\uff0c\u4f9b Flask \u4f7f\u7528\u3002 \u5b98\u7f51 OAuthLib\uff1a\u4e00\u4e2a OAuth \u8bf7\u6c42-\u7b7e\u540d\u903b\u8f91\u901a\u7528\u3001 \u5b8c\u6574\u7684\u5b9e\u73b0\u3002 \u5b98\u7f51 python-oauth2\uff1a\u4e00\u4e2a\u5b8c\u5168\u6d4b\u8bd5\u7684\u62bd\u8c61\u63a5\u53e3\u3002\u7528\u6765\u521b\u5efa OAuth \u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u3002 \u5b98\u7f51 python-social-auth\uff1a\u4e00\u4e2a\u8bbe\u7f6e\u7b80\u5355\u7684\u793e\u4f1a\u5316\u9a8c\u8bc1\u65b9\u5f0f\u3002 \u5b98\u7f51 rauth\uff1aOAuth 1.0/a, 2.0, \u548c Ofly \u7684 Python \u5e93\u3002 \u5b98\u7f51 sanction\uff1a\u4e00\u4e2a\u8d85\u7ea7\u7b80\u5355\u7684 OAuth2 \u5ba2\u6237\u7aef\u5b9e\u73b0\u3002 \u5b98\u7f51 \u5176\u4ed6 jose\uff1aJavaScript \u5bf9\u8c61\u7b7e\u540d\u548c\u52a0\u5bc6\u8349\u6848\u7684\u5b9e\u73b0\u3002 \u5b98\u7f51 PyJWT\uff1aJSON Web \u4ee4\u724c\u8349\u6848 01\u3002 \u5b98\u7f51 python-jws\uff1aJSON Web \u7b7e\u540d\u8349\u6848 02 \u7684\u5b9e\u73b0\u3002 \u5b98\u7f51 python-jwt\uff1a\u4e00\u4e2a\u7528\u6765\u751f\u6210\u548c\u9a8c\u8bc1 JSON Web \u4ee4\u724c\u7684\u6a21\u5757\u3002 \u5b98\u7f51",
"title": "\u9a8c\u8bc1"
},
{
"location": "/#_29",
"text": "\u6a21\u677f\u751f\u6210\u548c\u8bcd\u6cd5\u89e3\u6790\u7684\u5e93\u548c\u5de5\u5177\u3002 Jinja2 \uff1a\u4e00\u4e2a\u73b0\u4ee3\u7684\uff0c\u5bf9\u8bbe\u8ba1\u5e08\u53cb\u597d\u7684\u6a21\u677f\u5f15\u64ce\u3002 \u5b98\u7f51 Chameleon\uff1a\u4e00\u4e2a HTML/XML \u6a21\u677f\u5f15\u64ce\u3002 \u6a21\u4eff\u4e86 ZPT\uff08Zope Page Templates\uff09, \u8fdb\u884c\u4e86\u901f\u5ea6\u4e0a\u7684\u4f18\u5316\u3002 \u5b98\u7f51 Genshi\uff1aPython \u6a21\u677f\u5de5\u5177\uff0c\u7528\u4ee5\u751f\u6210 web \u611f\u77e5\u7684\u7ed3\u679c\u3002 \u5b98\u7f51 Mako\uff1aPython \u5e73\u53f0\u7684\u8d85\u9ad8\u901f\u8f7b\u91cf\u7ea7\u6a21\u677f\u3002 \u5b98\u7f51",
"title": "\u6a21\u677f\u5f15\u64ce"
},
{
"location": "/#_30",
"text": "\u5904\u7406\u4e8b\u4ef6\u4ee5\u53ca\u4efb\u52a1\u961f\u5217\u7684\u5e93\u3002 celery\uff1a\u4e00\u4e2a\u5f02\u6b65\u4efb\u52a1\u961f\u5217/\u4f5c\u4e1a\u961f\u5217\uff0c\u57fa\u4e8e\u5206\u5e03\u5f0f\u6d88\u606f\u4f20\u9012\u3002 \u5b98\u7f51 huey\uff1a\u5c0f\u578b\u591a\u7ebf\u7a0b\u4efb\u52a1\u961f\u5217\u3002 \u5b98\u7f51 mrq \uff1aMr. Queue -\u4e00\u4e2a Python \u7684\u5206\u5e03\u5f0f worker \u4efb\u52a1\u961f\u5217\uff0c \u4f7f\u7528 Redis \u548c gevent\u3002 \u5b98\u7f51 rq\uff1a\u7b80\u5355\u7684 Python \u4f5c\u4e1a\u961f\u5217\u3002 \u5b98\u7f51 simpleq\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0c\u53ef\u65e0\u9650\u6269\u5f20\u7684\uff0c\u57fa\u4e8e\u4e9a\u9a6c\u900a SQS \u7684\u961f\u5217\u3002 \u5b98\u7f51",
"title": "\u961f\u5217"
},
{
"location": "/#_31",
"text": "\u5bf9\u6570\u636e\u8fdb\u884c\u7d22\u5f15\u548c\u6267\u884c\u641c\u7d22\u67e5\u8be2\u7684\u5e93\u548c\u8f6f\u4ef6\u3002 django-haystack\uff1aDjango \u6a21\u5757\u5316\u641c\u7d22\u3002 \u5b98\u7f51 elasticsearch-py\uff1aElasticsearch \u7684\u5b98\u65b9\u5e95\u5c42 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 elasticsearch-dsl-py\uff1aElasticsearch \u7684\u5b98\u65b9\u9ad8\u7ea7 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 solrpy\uff1a solr \u7684 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 Whoosh\uff1a\u4e00\u4e2a\u5feb\u901f\u7684\u7eaf Python \u641c\u7d22\u5f15\u64ce\u5e93\u3002 \u5b98\u7f51",
"title": "\u641c\u7d22"
},
{
"location": "/#_32",
"text": "\u7528\u6765\u521b\u5efa\u7528\u6237\u6d3b\u52a8\u7684\u5e93\u3002 django-activity-stream\uff1a\u4ece\u4f60\u7684\u7ad9\u70b9\u884c\u4e3a\u4e2d\u751f\u6210\u901a\u7528\u6d3b\u52a8\u4fe1\u606f\u6d41\u3002 \u5b98\u7f51 Stream-Framework\uff1a\u4f7f\u7528 Cassandra \u548c Redis \u521b\u5efa\u52a8\u6001\u6d88\u606f\u548c\u901a\u77e5\u7cfb\u7edf\u3002 \u5b98\u7f51",
"title": "\u52a8\u6001\u6d88\u606f"
},
{
"location": "/#_33",
"text": "\u7ba1\u7406\u3001\u538b\u7f29\u3001\u7f29\u5c0f\u7f51\u7ad9\u8d44\u6e90\u7684\u5de5\u5177\u3002 django-compressor\uff1a\u5c06\u94fe\u63a5\u548c\u5185\u8054\u7684 JavaScript \u6216 CSS \u538b\u7f29\u5230\u4e00\u4e2a\u5355\u72ec\u7684\u7f13\u5b58\u6587\u4ef6\u4e2d\u3002 \u5b98\u7f51 django-storages\uff1a\u4e00\u4e2a\u9488\u5bf9 Django \u7684\u81ea\u5b9a\u4e49\u5b58\u50a8\u540e\u7aef\u7684\u5de5\u5177\u96c6\u5408\u3002 \u5b98\u7f51 fanstatic\uff1a\u6253\u5305\u3001\u4f18\u5316\uff0c\u5e76\u4e14\u628a\u9759\u6001\u6587\u4ef6\u4f9d\u8d56\u4f5c\u4e3a Python \u7684\u5305\u6765\u63d0\u4f9b\u3002 \u5b98\u7f51 File Conveyor\uff1a\u4e00\u4e2a\u540e\u53f0\u9a7b\u7559\u7684\u7a0b\u5e8f\uff0c\u7528\u6765\u53d1\u73b0\u548c\u540c\u6b65\u6587\u4ef6\u5230 CDNs, S3 \u548c FTP\u3002 \u5b98\u7f51 Flask-Assets\uff1a\u5e2e\u4f60\u5c06 web \u8d44\u6e90\u6574\u5408\u5230\u4f60\u7684 Flask app \u4e2d\u3002 \u5b98\u7f51 jinja-assets-compressor\uff1a\u4e00\u4e2a Jinja \u6269\u5c55\uff0c\u7528\u6765\u7f16\u8bd1\u548c\u538b\u7f29\u4f60\u7684\u8d44\u6e90\u3002 \u5b98\u7f51 webassets\uff1a\u4e3a\u4f60\u7684\u9759\u6001\u8d44\u6e90\u6253\u5305\u3001\u4f18\u5316\u548c\u7ba1\u7406\u751f\u6210\u72ec\u4e00\u65e0\u4e8c\u7684\u7f13\u5b58 URL\u3002 \u5b98\u7f51",
"title": "\u8d44\u6e90\u7ba1\u7406"
},
{
"location": "/#_34",
"text": "\u7f13\u5b58\u6570\u636e\u7684\u5e93\u3002 Beaker\uff1a\u4e00\u4e2a\u7f13\u5b58\u548c\u4f1a\u8bdd\u5e93\uff0c\u53ef\u4ee5\u7528\u5728 web \u5e94\u7528\u548c\u72ec\u7acb Python \u811a\u672c\u548c\u5e94\u7528\u4e0a\u3002 \u5b98\u7f51 django-cache-machine\uff1aDjango \u6a21\u578b\u7684\u81ea\u52a8\u7f13\u5b58\u548c\u5931\u6548\u3002 \u5b98\u7f51 django-cacheops\uff1a\u5177\u6709\u81ea\u52a8\u9897\u7c92\u5316\u4e8b\u4ef6\u9a71\u52a8\u5931\u6548\u529f\u80fd\u7684 ORM\u3002 \u5b98\u7f51 django-viewlet\uff1a\u6e32\u67d3\u6a21\u677f\uff0c\u540c\u65f6\u5177\u6709\u989d\u5916\u7684\u7f13\u5b58\u63a7\u5236\u529f\u80fd\u3002 \u5b98\u7f51 dogpile.cache\uff1adogpile.cache \u662f Beaker \u7684\u4e0b\u4e00\u4ee3\u66ff\u4ee3\u54c1\uff0c\u7531\u540c\u4e00\u4f5c\u8005\u5f00\u53d1\u3002 \u5b98\u7f51 HermesCache\uff1aPython \u7f13\u5b58\u5e93\uff0c\u5177\u6709\u57fa\u4e8e\u6807\u7b7e\u7684\u5931\u6548\u548c dogpile effect \u4fdd\u62a4\u529f\u80fd\u3002 \u5b98\u7f51 johnny-cache\uff1adjango \u5e94\u7528\u7f13\u5b58\u6846\u67b6\u3002 \u5b98\u7f51 pylibmc\uff1a libmemcached \u63a5\u53e3\u7684 Python \u5c01\u88c5\u3002 \u5b98\u7f51",
"title": "\u7f13\u5b58"
},
{
"location": "/#_35",
"text": "\u7528\u6765\u53d1\u9001\u548c\u89e3\u6790\u7535\u5b50\u90ae\u4ef6\u7684\u5e93\u3002 django-celery-ses\uff1a\u5e26\u6709 AWS SES \u548c Celery \u7684 Django email \u540e\u7aef\u3002 \u5b98\u7f51 envelopes\uff1a\u4f9b\u4eba\u7c7b\u4f7f\u7528\u7684\u7535\u5b50\u90ae\u4ef6\u5e93\u3002 \u5b98\u7f51 flanker\uff1a\u4e00\u4e2a email \u5730\u5740\u548c Mime \u89e3\u6790\u5e93\u3002 \u5b98\u7f51 imbox\uff1aPython IMAP \u5e93\u3002 \u5b98\u7f51 inbox.py\uff1aPython SMTP \u670d\u52a1\u5668\u3002 \u5b98\u7f51 inbox\uff1a\u4e00\u4e2a\u5f00\u6e90\u7535\u5b50\u90ae\u4ef6\u5de5\u5177\u7bb1\u3002 \u5b98\u7f51 lamson\uff1aPython \u98ce\u683c\u7684 SMTP \u5e94\u7528\u670d\u52a1\u5668\u3002 \u5b98\u7f51 mailjet\uff1aMailjet API \u5b9e\u73b0\uff0c\u7528\u6765\u63d0\u4f9b\u6279\u91cf\u53d1\u9001\u90ae\u4ef6\uff0c\u7edf\u8ba1\u7b49\u529f\u80fd\u3002 \u5b98\u7f51 marrow.mailer\uff1a\u9ad8\u6027\u80fd\u53ef\u6269\u5c55\u90ae\u4ef6\u5206\u53d1\u6846\u67b6\u3002 \u5b98\u7f51 modoboa\uff1a\u4e00\u4e2a\u90ae\u4ef6\u6258\u7ba1\u548c\u7ba1\u7406\u5e73\u53f0\uff0c\u5177\u6709\u73b0\u4ee3\u7684\u3001\u7b80\u7ea6\u7684 Web UI\u3002 \u5b98\u7f51 pyzmail\uff1a\u521b\u5efa\uff0c\u53d1\u9001\u548c\u89e3\u6790\u7535\u5b50\u90ae\u4ef6\u3002 \u5b98\u7f51 Talon\uff1aMailgun \u5e93\uff0c\u7528\u6765\u62bd\u53d6\u4fe1\u606f\u548c\u7b7e\u540d\u3002 \u5b98\u7f51",
"title": "\u7535\u5b50\u90ae\u4ef6"
},
{
"location": "/#_36",
"text": "\u7528\u6765\u8fdb\u884c\u56fd\u9645\u5316\u7684\u5e93\u3002 Babel\uff1a\u4e00\u4e2a Python \u7684\u56fd\u9645\u5316\u5e93\u3002 \u5b98\u7f51 Korean\uff1a\u4e00\u4e2a\u97e9\u8bed\u8bcd\u6001\u5e93\u3002 \u5b98\u7f51",
"title": "\u56fd\u9645\u5316"
},
{
"location": "/#url",
"text": "\u89e3\u6790 URLs \u7684\u5e93 furl\uff1a\u4e00\u4e2a\u8ba9\u5904\u7406 URL \u66f4\u7b80\u5355\u5c0f\u578b Python \u5e93\u3002 \u5b98\u7f51 purl\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0c\u4e0d\u53ef\u53d8\u7684 URL \u7c7b\uff0c\u5177\u6709\u7b80\u6d01\u7684 API \u6765\u8fdb\u884c\u8be2\u95ee\u548c\u5904\u7406\u3002 \u5b98\u7f51 pyshorteners\uff1a\u4e00\u4e2a\u7eaf Python URL \u7f29\u77ed\u5e93\u3002 \u5b98\u7f51 shorturl\uff1a\u751f\u6210\u77ed\u5c0f URL \u548c\u7c7b\u4f3c bit.ly \u77ed\u94fe\u7684 Python \u5b9e\u73b0\u3002 \u5b98\u7f51 webargs\uff1a\u4e00\u4e2a\u89e3\u6790 HTTP \u8bf7\u6c42\u53c2\u6570\u7684\u5e93\uff0c\u5185\u7f6e\u5bf9\u6d41\u884c web \u6846\u67b6\u7684\u652f\u6301\uff0c\u5305\u62ec Flask, Django, Bottle, Tornado \u548c Pyramid\u3002 \u5b98\u7f51",
"title": "URL \u5904\u7406"
},
{
"location": "/#html",
"text": "\u5904\u7406 HTML \u548c XML \u7684\u5e93\u3002 BeautifulSoup\uff1a\u4ee5 Python \u98ce\u683c\u7684\u65b9\u5f0f\u6765\u5bf9 HTML \u6216 XML \u8fdb\u884c\u8fed\u4ee3\uff0c\u641c\u7d22\u548c\u4fee\u6539\u3002 \u5b98\u7f51 bleach\uff1a\u4e00\u4e2a\u57fa\u4e8e\u767d\u540d\u5355\u7684 HTML \u6e05\u7406\u548c\u6587\u672c\u94fe\u63a5\u5e93\u3002 \u5b98\u7f51 cssutils\uff1a\u4e00\u4e2a Python \u7684 CSS \u5e93\u3002 \u5b98\u7f51 html5lib\uff1a\u4e00\u4e2a\u517c\u5bb9\u6807\u51c6\u7684 HTML \u6587\u6863\u548c\u7247\u6bb5\u89e3\u6790\u53ca\u5e8f\u5217\u5316\u5e93\u3002 \u5b98\u7f51 lxml\uff1a\u4e00\u4e2a\u975e\u5e38\u5feb\u901f\uff0c\u7b80\u5355\u6613\u7528\uff0c\u529f\u80fd\u9f50\u5168\u7684\u5e93\uff0c\u7528\u6765\u5904\u7406 HTML \u548c XML\u3002 \u5b98\u7f51 MarkupSafe\uff1a\u4e3a Python \u5b9e\u73b0 XML/HTML/XHTML \u6807\u8bb0\u5b89\u5168\u5b57\u7b26\u4e32\u3002 \u5b98\u7f51 pyquery\uff1a\u4e00\u4e2a\u89e3\u6790 HTML \u7684\u5e93\uff0c\u7c7b\u4f3c jQuery\u3002 \u5b98\u7f51 requests-html\uff1a\u4eba\u6027\u5316\u7684\uff0cPythonic \u7684 HTML \u89e3\u6790\u5e93\u3002 \u5b98\u7f51 untangle\uff1a\u5c06 XML \u6587\u6863\u8f6c\u6362\u4e3a Python \u5bf9\u8c61\uff0c\u4f7f\u5176\u53ef\u4ee5\u65b9\u4fbf\u7684\u8bbf\u95ee\u3002 \u5b98\u7f51 xhtml2pdf\uff1aHTML/CSS \u8f6c PDF \u5de5\u5177\u3002 \u5b98\u7f51 xmltodict\uff1a\u50cf\u5904\u7406 JSON \u4e00\u6837\u5904\u7406 XML\u3002 \u5b98\u7f51 \u722c\u53d6\u7f51\u7edc\u7ad9\u70b9\u7684\u5e93 Scrapy\uff1a\u4e00\u4e2a\u5feb\u901f\u9ad8\u7ea7\u7684\u5c4f\u5e55\u722c\u53d6\u53ca\u7f51\u9875\u91c7\u96c6\u6846\u67b6\u3002 \u5b98\u7f51 cola\uff1a\u4e00\u4e2a\u5206\u5e03\u5f0f\u722c\u866b\u6846\u67b6\u3002 \u5b98\u7f51 Demiurge\uff1a\u57fa\u4e8e PyQuery \u7684\u722c\u866b\u5fae\u578b\u6846\u67b6\u3002 \u5b98\u7f51 feedparser\uff1a\u901a\u7528 feed \u89e3\u6790\u5668\u3002 \u5b98\u7f51 Grab\uff1a\u7ad9\u70b9\u722c\u53d6\u6846\u67b6\u3002 \u5b98\u7f51 MechanicalSoup\uff1a\u7528\u4e8e\u81ea\u52a8\u548c\u7f51\u7edc\u7ad9\u70b9\u4ea4\u4e92\u7684 Python \u5e93\u3002 \u5b98\u7f51 portia\uff1aScrapy \u53ef\u89c6\u5316\u722c\u53d6\u3002 \u5b98\u7f51 pyspider\uff1a\u4e00\u4e2a\u5f3a\u5927\u7684\u722c\u866b\u7cfb\u7edf\u3002 \u5b98\u7f51 RoboBrowser\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0cPython \u98ce\u683c\u7684\u5e93\uff0c\u7528\u6765\u6d4f\u89c8\u7f51\u7ad9\uff0c\u800c\u4e0d\u9700\u8981\u4e00\u4e2a\u72ec\u7acb\u5b89\u88c5\u7684\u6d4f\u89c8\u5668\u3002 \u5b98\u7f51",
"title": "HTML \u5904\u7406"
},
{
"location": "/#_37",
"text": "\u7528\u4e8e\u8fdb\u884c\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\u7684\u5e93\u3002 Haul\uff1a\u4e00\u4e2a\u53ef\u4ee5\u6269\u5c55\u7684\u56fe\u50cf\u722c\u53d6\u5de5\u5177\u3002 \u5b98\u7f51 html2text\uff1a\u5c06 HTML \u8f6c\u6362\u4e3a Markdown \u683c\u5f0f\u6587\u672c\u3002 \u5b98\u7f51 lassie\uff1a\u4eba\u6027\u5316\u7684\u7f51\u9875\u5185\u5bb9\u68c0\u7d22\u5e93\u3002 \u5b98\u7f51 micawber\uff1a\u4e00\u4e2a\u5c0f\u578b\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\u5e93\uff0c\u7528\u6765\u4ece URLs \u63d0\u53d6\u5bcc\u5185\u5bb9\u3002 \u5b98\u7f51 newspaper \uff1a\u4f7f\u7528 Python \u8fdb\u884c\u65b0\u95fb\u63d0\u53d6\uff0c\u6587\u7ae0\u63d0\u53d6\u4ee5\u53ca\u5185\u5bb9\u7b56\u5c55\u3002 \u5b98\u7f51 opengraph\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790\u5f00\u653e\u5185\u5bb9\u534f\u8bae(Open Graph Protocol)\u7684 Python \u6a21\u5757\u3002 \u5b98\u7f51 python-goose \uff1aHTML \u5185\u5bb9/\u6587\u7ae0\u63d0\u53d6\u5668\u3002 \u5b98\u7f51 python-readability\uff1aarc90 \u516c\u53f8 readability \u5de5\u5177\u7684 Python \u9ad8\u901f\u7aef\u53e3\u3002 \u5b98\u7f51 sanitize\uff1a\u4e3a\u6742\u4e71\u7684\u6570\u636e\u4e16\u754c\u5e26\u6765\u8c03\u7406\u6027\u3002 \u5b98\u7f51 sumy\uff1a\u4e00\u4e2a\u4e3a\u6587\u672c\u6587\u4ef6\u548c HTML \u9875\u9762\u8fdb\u884c\u81ea\u52a8\u6458\u8981\u7684\u6a21\u5757\u3002 \u5b98\u7f51 textract\uff1a\u4ece\u4efb\u4f55\u683c\u5f0f\u7684\u6587\u6863\u4e2d\u63d0\u53d6\u6587\u672c\uff0cWord\uff0cPowerPoint\uff0cPDFs \u7b49\u7b49\u3002 \u5b98\u7f51",
"title": "\u7f51\u9875\u5185\u5bb9\u63d0\u53d6"
},
{
"location": "/#_38",
"text": "\u8fdb\u884c\u8868\u5355\u64cd\u4f5c\u7684\u5e93\u3002 Deform\uff1aPython HTML \u8868\u5355\u751f\u6210\u5e93\uff0c\u53d7\u5230\u4e86 formish \u8868\u5355\u751f\u6210\u5e93\u7684\u542f\u53d1\u3002 \u5b98\u7f51 django-bootstrap3\uff1a\u96c6\u6210\u4e86 Bootstrap 3 \u7684 Django\u3002 \u5b98\u7f51 django-crispy-forms\uff1a\u4e00\u4e2a Django \u5e94\u7528\uff0c\u4ed6\u53ef\u4ee5\u8ba9\u4f60\u4ee5\u4e00\u79cd\u975e\u5e38\u4f18\u96c5\u4e14 DRY\uff08Don't repeat yourself\uff09 \u7684\u65b9\u5f0f\u6765\u521b\u5efa\u7f8e\u89c2\u7684\u8868\u5355\u3002 \u5b98\u7f51 django-remote-forms\uff1a\u4e00\u4e2a\u5e73\u53f0\u72ec\u7acb\u7684 Django \u8868\u5355\u5e8f\u5217\u5316\u5de5\u5177\u3002 \u5b98\u7f51 WTForms\uff1a\u4e00\u4e2a\u7075\u6d3b\u7684\u8868\u5355\u9a8c\u8bc1\u548c\u5448\u73b0\u5e93\u3002 \u5b98\u7f51 WTForms-JSON\uff1a\u4e00\u4e2a WTForms \u6269\u5c55\uff0c\u7528\u6765\u5904\u7406 JSON \u6570\u636e\u3002 \u5b98\u7f51",
"title": "\u8868\u5355"
},
{
"location": "/#_39",
"text": "\u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u591a\u7528\u4e8e\u8868\u5355\u9a8c\u8bc1\u3002 Cerberus\uff1a\u4e00\u4e2a\u6620\u5c04\u9a8c\u8bc1\u5668\uff08mappings-validator\uff09\u3002\u652f\u6301\u591a\u79cd\u89c4\u5219\uff0c\u63d0\u4f9b\u5f52\u4e00\u5316\u529f\u80fd\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u5b9a\u5236\u4e3a Python \u98ce\u683c\u7684 schema \u5b9a\u4e49\u3002 \u5b98\u7f51 colander\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9\u4ece XML, JSON\uff0cHTML \u8868\u5355\u83b7\u53d6\u7684\u6570\u636e\u6216\u5176\u4ed6\u540c\u6837\u7b80\u5355\u7684\u5e8f\u5217\u5316\u6570\u636e\u8fdb\u884c\u9a8c\u8bc1\u548c\u53cd\u5e8f\u5217\u5316\u7684\u7cfb\u7edf\u3002 \u5b98\u7f51 kmatch\uff1a\u4e00\u79cd\u7528\u4e8e\u5339\u914d/\u9a8c\u8bc1/\u7b5b\u9009 Python \u5b57\u5178\u7684\u8bed\u8a00\u3002 \u5b98\u7f51 schema\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9 Python \u6570\u636e\u7ed3\u6784\u8fdb\u884c\u9a8c\u8bc1\u7684\u5e93\u3002 \u5b98\u7f51 Schematics\uff1a\u6570\u636e\u7ed3\u6784\u9a8c\u8bc1\u3002 \u5b98\u7f51 valideer\uff1a\u8f7b\u91cf\u7ea7\u53ef\u6269\u5c55\u7684\u6570\u636e\u9a8c\u8bc1\u548c\u9002\u914d\u5e93\u3002 \u5b98\u7f51 voluptuous\uff1a\u4e00\u4e2a Python \u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u4e3b\u8981\u662f\u4e3a\u4e86\u9a8c\u8bc1\u4f20\u5165 Python \u7684 JSON\uff0cYAML \u7b49\u6570\u636e\u3002 \u5b98\u7f51 jsonschema\uff1a JSON Schema \u7684 python \u5b9e\u73b0\uff0c\u7528\u4e8e JSON \u6570\u636e\u7684\u9a8c\u8bc1\u3002 \u5b98\u7f51",
"title": "\u6570\u636e\u9a8c\u8bc1"
},
{
"location": "/#_40",
"text": "\u5e2e\u52a9\u4f60\u548c\u7535\u5b50\u5783\u573e\u8fdb\u884c\u6218\u6597\u7684\u5e93\u3002 django-simple-captcha\uff1a\u4e00\u4e2a\u7b80\u5355\u3001\u9ad8\u5ea6\u53ef\u5b9a\u5236\u7684 Django \u5e94\u7528\uff0c\u53ef\u4ee5\u4e3a\u4efb\u4f55 Django \u8868\u5355\u6dfb\u52a0\u9a8c\u8bc1\u7801\u3002 \u5b98\u7f51 django-simple-spam-blocker\uff1a\u4e00\u4e2a\u7528\u4e8e Django \u7684\u7b80\u5355\u7684\u7535\u5b50\u5783\u573e\u5c4f\u853d\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u53cd\u5783\u573e\u6280\u672f"
},
{
"location": "/#_41",
"text": "\u7528\u6765\u8fdb\u884c\u6807\u8bb0\u7684\u5e93\u3002 django-taggit\uff1a\u7b80\u5355\u7684 Django \u6807\u8bb0\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u6807\u8bb0"
},
{
"location": "/#_42",
"text": "\u7ba1\u7406\u754c\u9762\u5e93\u3002 Ajenti\uff1a\u4e00\u4e2a\u4f60\u7684\u670d\u52a1\u5668\u503c\u5f97\u62e5\u6709\u7684\u7ba1\u7406\u9762\u677f\u3002 \u5b98\u7f51 django-suit\uff1aDjango \u7ba1\u7406\u754c\u9762\u7684\u4e00\u4e2a\u66ff\u4ee3\u54c1 (\u4ec5\u5bf9\u4e8e\u975e\u5546\u4e1a\u7528\u9014\u662f\u514d\u8d39\u7684)\u3002 \u5b98\u7f51 django-xadmin\uff1aDjango admin \u7684\u4e00\u4e2a\u66ff\u4ee3\u54c1\uff0c\u5177\u6709\u5f88\u591a\u4e0d\u9519\u7684\u529f\u80fd\u3002 \u5b98\u7f51 flask-admin\uff1a\u4e00\u4e2a\u7528\u4e8e Flask \u7684\u7b80\u5355\u53ef\u6269\u5c55\u7684\u7ba1\u7406\u754c\u9762\u6846\u67b6\u3002 \u5b98\u7f51 flower\uff1a\u4e00\u4e2a\u5bf9 Celery \u96c6\u7fa4\u8fdb\u884c\u5b9e\u65f6\u76d1\u63a7\u548c\u63d0\u4f9b web \u7ba1\u7406\u754c\u9762\u7684\u5de5\u5177\u3002 \u5b98\u7f51 Grappelli\uff1aDjango \u7ba1\u7406\u754c\u9762\u7684\u4e00\u4e2a\u6f02\u4eae\u7684\u76ae\u80a4\u3002 \u5b98\u7f51 Wooey\uff1a\u4e00\u4e2a Django \u5e94\u7528\uff0c\u53ef\u4ee5\u4e3a Python \u811a\u672c\u521b\u5efa web \u7528\u6237\u754c\u9762\u3002 \u5b98\u7f51",
"title": "\u7ba1\u7406\u9762\u677f"
},
{
"location": "/#_43",
"text": "\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u662f\u4e00\u4e2a\u8f6f\u4ef6\uff0c\u5b83\u628a\u6587\u672c\u548c\u6a21\u677f\u4f5c\u4e3a\u8f93\u5165\uff0c\u7136\u540e\u8f93\u51fa HTML \u6587\u4ef6\u3002 Pelican\uff1a\u4f7f\u7528 Markdown \u6216 ReST \u6765\u5904\u7406\u5185\u5bb9\uff0c Jinja 2 \u6765\u5236\u4f5c\u4e3b\u9898\u3002\u652f\u6301 DVCS, Disqus.\u3002AGPL \u8bb8\u53ef\u3002 \u5b98\u7f51 Cactus\uff1a\u4e3a\u8bbe\u8ba1\u5e08\u8bbe\u8ba1\u7684\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u3002 \u5b98\u7f51 Hyde\uff1a\u57fa\u4e8e Jinja2 \u7684\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u3002 \u5b98\u7f51 Nikola\uff1a\u4e00\u4e2a\u9759\u6001\u7f51\u7ad9\u548c\u535a\u5ba2\u751f\u6210\u5668\u3002 \u5b98\u7f51 Tinkerer\uff1aTinkerer \u662f\u4e00\u4e2a\u535a\u5ba2\u5f15\u64ce/\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\uff0c\u7531 Sphinx \u9a71\u52a8\u3002 \u5b98\u7f51 Lektor\uff1a\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684\u9759\u6001 CMS \u548c\u535a\u5ba2\u5f15\u64ce\u3002 \u5b98\u7f51",
"title": "\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668"
},
{
"location": "/#_44",
"text": "\u64cd\u4f5c\u7cfb\u7edf\u8fdb\u7a0b\u542f\u52a8\u53ca\u901a\u4fe1\u5e93\u3002 envoy\uff1a\u6bd4 Python subprocess \u6a21\u5757\u66f4\u4eba\u6027\u5316\u3002 \u5b98\u7f51 sarge\uff1a\u53e6\u4e00 \u79cd subprocess \u6a21\u5757\u7684\u5c01\u88c5\u3002 \u5b98\u7f51 sh\uff1a\u4e00\u4e2a\u5b8c\u5907\u7684 subprocess \u66ff\u4ee3\u5e93\u3002 \u5b98\u7f51",
"title": "\u8fdb\u7a0b"
},
{
"location": "/#_45",
"text": "\u7528\u4ee5\u8fdb\u884c\u5e76\u53d1\u548c\u5e76\u884c\u64cd\u4f5c\u7684\u5e93\u3002 multiprocessing\uff1a(Python \u6807\u51c6\u5e93) \u57fa\u4e8e\u8fdb\u7a0b\u7684\u201c\u7ebf\u7a0b\u201d\u63a5\u53e3\u3002 \u5b98\u7f51 threading\uff1a(Python \u6807\u51c6\u5e93)\u66f4\u9ad8\u5c42\u7684\u7ebf\u7a0b\u63a5\u53e3\u3002 \u5b98\u7f51 eventlet\uff1a\u652f\u6301 WSGI \u7684\u5f02\u6b65\u6846\u67b6\u3002 \u5b98\u7f51 gevent\uff1a\u4e00\u4e2a\u57fa\u4e8e\u534f\u7a0b\u7684 Python \u7f51\u7edc\u5e93\uff0c\u4f7f\u7528 greenlet \u3002 \u5b98\u7f51 Tomorrow\uff1a\u7528\u4e8e\u4ea7\u751f\u5f02\u6b65\u4ee3\u7801\u7684\u795e\u5947\u7684\u88c5\u9970\u5668\u8bed\u6cd5\u5b9e\u73b0\u3002 \u5b98\u7f51 uvloop\uff1a\u5728 libuv \u4e4b\u4e0a\u8d85\u5feb\u901f\u5b9e\u73b0 asyncio \u4e8b\u4ef6\u5faa\u73af\u3002 \u5b98\u7f51",
"title": "\u5e76\u53d1\u548c\u5e76\u884c"
},
{
"location": "/#_46",
"text": "\u7528\u4e8e\u7f51\u7edc\u7f16\u7a0b\u7684\u5e93\u3002 asyncio\uff1a(Python \u6807\u51c6\u5e93) \u5f02\u6b65 I/O, \u4e8b\u4ef6\u5faa\u73af, \u534f\u7a0b\u4ee5\u53ca\u4efb\u52a1\u3002 \u5b98\u7f51 Twisted \uff1a\u4e00\u4e2a\u4e8b\u4ef6\u9a71\u52a8\u7684\u7f51\u7edc\u5f15\u64ce\u3002 \u5b98\u7f51 pulsar\uff1a\u4e8b\u4ef6\u9a71\u52a8\u7684\u5e76\u53d1\u6846\u67b6\u3002 \u5b98\u7f51 diesel\uff1a\u57fa\u4e8e Greenlet \u7684\u4e8b\u4ef6 I/O \u6846\u67b6\u3002 \u5b98\u7f51 pyzmq\uff1a\u4e00\u4e2a ZeroMQ \u6d88\u606f\u5e93\u7684 Python \u5c01\u88c5\u3002 \u5b98\u7f51 Toapi\uff1a\u4e00\u4e2a\u8f7b\u5de7\uff0c\u7b80\u5355\uff0c\u5feb\u901f\u7684 Flask \u5e93\uff0c\u81f4\u529b\u4e8e\u4e3a\u6240\u6709\u7f51\u7ad9\u63d0\u4f9b API \u670d\u52a1\u3002 \u5b98\u7f51 txZMQ\uff1a\u57fa\u4e8e Twisted \u7684 ZeroMQ \u6d88\u606f\u5e93\u7684 Python \u5c01\u88c5\u3002 \u5b98\u7f51",
"title": "\u7f51\u7edc"
},
{
"location": "/#websocket",
"text": "\u5e2e\u52a9\u4f7f\u7528 WebSocket \u7684\u5e93\u3002 AutobahnPython\uff1a\u7ed9 Python \u3001\u4f7f\u7528\u7684 WebSocket WAMP \u57fa\u4e8e Twisted \u548c asyncio \u3002 \u5b98\u7f51 Crossbar\uff1a\u5f00\u6e90\u7edf\u4e00\u5e94\u7528\u8def\u7531(Websocket WAMP for Python on Autobahn)\u3002 \u5b98\u7f51 django-socketio\uff1a\u7ed9 Django \u7528\u7684 WebSockets\u3002 \u5b98\u7f51 WebSocket-for-Python\uff1a\u4e3a Python2/3 \u4ee5\u53ca PyPy \u7f16\u5199\u7684 WebSocket \u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u5e93\u3002 \u5b98\u7f51",
"title": "WebSocket"
},
{
"location": "/#wsgi",
"text": "\u517c\u5bb9 WSGI \u7684 web \u670d\u52a1\u5668 gunicorn\uff1aPre-forked, \u90e8\u5206\u662f\u7531 C \u8bed\u8a00\u7f16\u5199\u7684\u3002 \u5b98\u7f51 uwsgi\uff1auwsgi \u9879\u76ee\u7684\u76ee\u7684\u662f\u5f00\u53d1\u4e00\u7ec4\u5168\u6808\u5de5\u5177\uff0c\u7528\u6765\u5efa\u7acb\u6258\u7ba1\u670d\u52a1\uff0c \u7531 C \u8bed\u8a00\u7f16\u5199\u3002 \u5b98\u7f51 bjoern \uff1a\u5f02\u6b65\uff0c\u975e\u5e38\u5feb\u901f\uff0c\u7531 C \u8bed\u8a00\u7f16\u5199\u3002 \u5b98\u7f51 fapws3\uff1a\u5f02\u6b65 (\u4ec5\u5bf9\u4e8e\u7f51\u7edc\u7aef)\uff0c\u7531 C \u8bed\u8a00\u7f16\u5199\u3002 \u5b98\u7f51 meinheld\uff1a\u5f02\u6b65\uff0c\u90e8\u5206\u662f\u7531 C \u8bed\u8a00\u7f16\u5199\u7684\u3002 \u5b98\u7f51 netius\uff1a\u5f02\u6b65\uff0c\u975e\u5e38\u5feb\u901f\u3002 \u5b98\u7f51 paste\uff1a\u591a\u7ebf\u7a0b\uff0c\u7a33\u5b9a\uff0c\u4e45\u7ecf\u8003\u9a8c\u3002 \u5b98\u7f51 rocket\uff1a\u591a\u7ebf\u7a0b\u3002 \u5b98\u7f51 waitress\uff1a\u591a\u7ebf\u7a0b, \u662f\u5b83\u9a71\u52a8\u7740 Pyramid \u6846\u67b6\u3002 \u5b98\u7f51 Werkzeug\uff1a\u4e00\u4e2a WSGI \u5de5\u5177\u5e93\uff0c\u9a71\u52a8\u7740 Flask \uff0c\u800c\u4e14\u53ef\u4ee5\u5f88\u65b9\u4fbf\u5927\u5d4c\u5165\u5230\u4f60\u7684\u9879\u76ee\u4e2d\u53bb\u3002 \u5b98\u7f51",
"title": "WSGI \u670d\u52a1\u5668"
},
{
"location": "/#rpc",
"text": "\u517c\u5bb9 RPC \u7684\u670d\u52a1\u5668\u3002 SimpleJSONRPCServer\uff1a\u8fd9\u4e2a\u5e93\u662f JSON-RPC \u89c4\u8303\u7684\u4e00\u4e2a\u5b9e\u73b0\u3002 \u5b98\u7f51 SimpleXMLRPCServer\uff1a(Python \u6807\u51c6\u5e93) \u7b80\u5355\u7684 XML-RPC \u670d\u52a1\u5668\u5b9e\u73b0\uff0c\u5355\u7ebf\u7a0b\u3002 \u5b98\u7f51 zeroRPC\uff1azerorpc \u662f\u4e00\u4e2a\u7075\u6d3b\u7684 RPC \u5b9e\u73b0\uff0c\u57fa\u4e8e ZeroMQ \u548c MessagePack\u3002 \u5b98\u7f51",
"title": "RPC \u670d\u52a1\u5668"
},
{
"location": "/#_47",
"text": "cryptography\uff1a\u8fd9\u4e2a\u8f6f\u4ef6\u5305\u610f\u5728\u63d0\u4f9b\u5bc6\u7801\u5b66\u57fa\u672c\u5185\u5bb9\u548c\u65b9\u6cd5\u63d0\u4f9b\u7ed9 Python \u5f00\u53d1\u8005\u3002 \u5b98\u7f51 hashids\uff1a\u5728 Python \u4e2d\u5b9e\u73b0 hashids \u3002 \u5b98\u7f51 Paramiko\uff1aSSHv2 \u534f\u8bae\u7684 Python (2.6+, 3.3+) \uff0c\u63d0\u4f9b\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684\u529f\u80fd\u3002 \u5b98\u7f51 Passlib\uff1a\u5b89\u5168\u5bc6\u7801\u5b58\u50a8\uff0f\u54c8\u5e0c\u5e93\uff0c \u5b98\u7f51 PyCrypto\uff1aPython \u5bc6\u7801\u5b66\u5de5\u5177\u7bb1\u3002 \u5b98\u7f51 PyNacl\uff1a\u7f51\u7edc\u548c\u5bc6\u7801\u5b66(NaCl) \u5e93\u7684 Python \u7ed1\u5b9a\u3002 \u5b98\u7f51",
"title": "\u5bc6\u7801\u5b66"
},
{
"location": "/#_48",
"text": "\u7528\u6765\u521b\u5efa\u56fe\u5f62\u7528\u6237\u754c\u9762\u7a0b\u5e8f\u7684\u5e93\u3002 curses\uff1a\u5185\u5efa\u7684 ncurses \u5c01\u88c5\uff0c\u7528\u6765\u521b\u5efa\u7ec8\u7aef\u56fe\u5f62\u7528\u6237\u754c\u9762\u3002 \u5b98\u7f51 enaml\uff1a\u4f7f\u7528\u7c7b\u4f3c QML \u7684 Declaratic \u8bed\u6cd5\u6765\u521b\u5efa\u7f8e\u89c2\u7684\u7528\u6237\u754c\u9762\u3002 \u5b98\u7f51 kivy \uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u81ea\u7136\u7528\u6237\u4ea4\u4e92\uff08NUI\uff09\u5e94\u7528\u7a0b\u5e8f\u7684\u5e93\uff0c\u53ef\u4ee5\u8fd0\u884c\u5728 Windows, Linux, Mac OS X, Android \u4ee5\u53ca iOS \u5e73\u53f0\u4e0a\u3002 \u5b98\u7f51 pyglet\uff1a\u4e00\u4e2a Python \u7684\u8de8\u5e73\u53f0\u7a97\u53e3\u53ca\u591a\u5a92\u4f53\u5e93\u3002 \u5b98\u7f51 PyQt\uff1a\u8de8\u5e73\u53f0\u7528\u6237\u754c\u9762\u6846\u67b6 Qt \u7684 Python \u7ed1\u5b9a \uff0c\u652f\u6301 Qt v4 \u548c Qt v5\u3002 \u5b98\u7f51 PySide\uff1a\u8de8\u5e73\u53f0\u7528\u6237\u754c\u9762\u6846\u67b6 Qt \u7684 Python \u7ed1\u5b9a \uff0c\u652f\u6301 Qt v4\u3002 \u5b98\u7f51 Tkinter\uff1aTkinter \u662f Python GUI \u7684\u4e00\u4e2a\u4e8b\u5b9e\u6807\u51c6\u5e93\u3002 \u5b98\u7f51 Toga\uff1a\u4e00\u4e2a Python \u539f\u751f\u7684, \u64cd\u4f5c\u7cfb\u7edf\u539f\u751f\u7684 GUI \u5de5\u5177\u5305\u3002 \u5b98\u7f51 urwid\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u7ec8\u7aef GUI \u5e94\u7528\u7684\u5e93\uff0c\u652f\u6301\u7ec4\u4ef6\uff0c\u4e8b\u4ef6\u548c\u4e30\u5bcc\u7684\u8272\u5f69\u7b49\u3002 \u5b98\u7f51 wxPython\uff1awxPython \u662f wxWidgets C++ \u7c7b\u5e93\u548c Python \u8bed\u8a00\u6df7\u5408\u7684\u4ea7\u7269\u3002 \u5b98\u7f51 PyGObject\uff1aGLib/GObject/GIO/GTK+ (GTK+3) \u7684 Python \u7ed1\u5b9a\u3002 \u5b98\u7f51 Flexx\uff1aFlexx \u662f\u4e00\u4e2a\u7eaf Python \u8bed\u8a00\u7f16\u5199\u7684\u7528\u6765\u521b\u5efa GUI \u7a0b\u5e8f\u7684\u5de5\u5177\u96c6\uff0c\u5b83\u4f7f\u7528 web \u6280\u672f\u8fdb\u884c\u754c\u9762\u7684\u5c55\u793a\u3002 \u5b98\u7f51",
"title": "\u56fe\u5f62\u7528\u6237\u754c\u9762"
},
{
"location": "/#_49",
"text": "\u8d85\u8d5e\u7684\u6e38\u620f\u5f00\u53d1\u5e93\u3002 Cocos2d\uff1acocos2d \u662f\u4e00\u4e2a\u7528\u6765\u5f00\u53d1 2D \u6e38\u620f\uff0c \u793a\u4f8b\u548c\u5176\u4ed6\u56fe\u5f62/\u4ea4\u4e92\u5e94\u7528\u7684\u6846\u67b6\u3002\u57fa\u4e8e pyglet\u3002 \u5b98\u7f51 Panda3D\uff1a\u7531\u8fea\u58eb\u5c3c\u5f00\u53d1\u7684 3D \u6e38\u620f\u5f15\u64ce\uff0c\u5e76\u7531\u5361\u5185\u57fa\u6885\u9647\u5a31\u4e50\u6280\u672f\u4e2d\u5fc3\u8d1f\u8d23\u7ef4\u62a4\u3002\u4f7f\u7528 C++ \u7f16\u5199, \u9488\u5bf9 Python \u8fdb\u884c\u4e86\u5b8c\u5168\u7684\u5c01\u88c5\u3002 \u5b98\u7f51 Pygame\uff1aPygame \u662f\u4e00\u7ec4 Python \u6a21\u5757\uff0c\u7528\u6765\u7f16\u5199\u6e38\u620f\u3002 \u5b98\u7f51 PyOgre\uff1aOgre 3D \u6e32\u67d3\u5f15\u64ce\u7684 Python \u7ed1\u5b9a\uff0c\u53ef\u4ee5\u7528\u6765\u5f00\u53d1\u6e38\u620f\u548c\u4eff\u771f\u7a0b\u5e8f\u7b49\u4efb\u4f55 3D \u5e94\u7528\u3002 \u5b98\u7f51 PyOpenGL\uff1aOpenGL \u7684 Python \u7ed1\u5b9a\u53ca\u5176\u76f8\u5173 APIs\u3002 \u5b98\u7f51 PySDL2\uff1aSDL2 \u5e93\u7684\u5c01\u88c5\uff0c\u57fa\u4e8e ctypes\u3002 \u5b98\u7f51 RenPy\uff1a\u4e00\u4e2a\u89c6\u89c9\u5c0f\u8bf4\uff08visual novel\uff09\u5f15\u64ce\u3002 \u5b98\u7f51",
"title": "\u6e38\u620f\u5f00\u53d1"
},
{
"location": "/#_50",
"text": "\u7528\u6765\u751f\u6210\u548c\u64cd\u4f5c\u65e5\u5fd7\u7684\u5e93\u3002 logging\uff1a(Python \u6807\u51c6\u5e93) \u4e3a Python \u63d0\u4f9b\u65e5\u5fd7\u529f\u80fd\u3002 \u5b98\u7f51 logbook\uff1aLogging \u5e93\u7684\u66ff\u4ee3\u54c1\u3002 \u5b98\u7f51 Eliot\uff1a\u4e3a\u590d\u6742\u7684\u548c\u5206\u5e03\u5f0f\u7cfb\u7edf\u521b\u5efa\u65e5\u5fd7\u3002 \u5b98\u7f51 Raven\uff1aSentry \u7684 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 Sentry\uff1a\u5b9e\u65f6\u8bb0\u5f55\u548c\u6536\u96c6\u65e5\u5fd7\u7684\u670d\u52a1\u5668\u3002 \u5b98\u7f51",
"title": "\u65e5\u5fd7"
},
{
"location": "/#_51",
"text": "\u8fdb\u884c\u4ee3\u7801\u5e93\u6d4b\u8bd5\u548c\u751f\u6210\u6d4b\u8bd5\u6570\u636e\u7684\u5e93\u3002 \u6d4b\u8bd5\u6846\u67b6 unittest\uff1a(Python \u6807\u51c6\u5e93) \u5355\u5143\u6d4b\u8bd5\u6846\u67b6\u3002 \u5b98\u7f51 nose\uff1anose \u6269\u5c55\u4e86 unittest \u7684\u529f\u80fd\u3002 \u5b98\u7f51 contexts\uff1a\u4e00\u4e2a Python 3.3+ \u7684 BDD \u6846\u67b6\u3002\u53d7\u5230 C# \u2013 Machine.Specifications \u7684\u542f\u53d1\u3002 \u5b98\u7f51 hypothesis\uff1aHypothesis \u662f\u4e00\u4e2a\u57fa\u4e8e\u5148\u8fdb\u7684 Quickcheck \u98ce\u683c\u7279\u6027\u7684\u6d4b\u8bd5\u5e93\u3002 \u5b98\u7f51 mamba\uff1aPython \u7684\u7ec8\u6781\u6d4b\u8bd5\u5de5\u5177\uff0c \u62e5\u62a4 BDD\u3002 \u5b98\u7f51 PyAutoGUI\uff1aPyAutoGUI \u662f\u4e00\u4e2a\u4eba\u6027\u5316\u7684\u8de8\u5e73\u53f0 GUI \u81ea\u52a8\u6d4b\u8bd5\u6a21\u5757\u3002 \u5b98\u7f51 pyshould\uff1aShould \u98ce\u683c\u7684\u65ad\u8a00\uff0c\u57fa\u4e8e PyHamcrest \u3002 \u5b98\u7f51 pytest\uff1a\u4e00\u4e2a\u6210\u719f\u7684\u5168\u529f\u80fd Python \u6d4b\u8bd5\u5de5\u5177\u3002 \u5b98\u7f51 green\uff1a\u5e72\u51c0\uff0c\u591a\u5f69\u7684\u6d4b\u8bd5\u5de5\u5177\u3002 \u5b98\u7f51 pyvows\uff1aBDD \u98ce\u683c\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u53d7 Vows.js \u7684\u542f\u53d1\u3002 \u5b98\u7f51 Robot Framework\uff1a\u4e00\u4e2a\u901a\u7528\u7684\u81ea\u52a8\u5316\u6d4b\u8bd5\u6846\u67b6\u3002 \u5b98\u7f51 Web \u6d4b\u8bd5 Selenium\uff1a Selenium WebDriver \u7684 Python \u7ed1\u5b9a\u3002 \u5b98\u7f51 locust\uff1a\u4f7f\u7528 Python \u7f16\u5199\u7684\uff0c\u53ef\u6269\u5c55\u7684\u7528\u6237\u52a0\u8f7d\u6d4b\u8bd5\u5de5\u5177\u3002 \u5b98\u7f51 sixpack\uff1a\u4e00\u4e2a\u548c\u8bed\u8a00\u65e0\u5173\u7684 A/B \u6d4b\u8bd5\u6846\u67b6\u3002 \u5b98\u7f51 splinter\uff1a\u5f00\u6e90\u7684 web \u5e94\u7528\u6d4b\u8bd5\u5de5\u5177\u3002 \u5b98\u7f51 Mock \u6d4b\u8bd5 mock\uff1a(Python \u6807\u51c6\u5e93) \u4e00\u4e2a\u7528\u4e8e\u4f2a\u9020\u6d4b\u8bd5\u7684\u5e93\u3002 \u5b98\u7f51 doublex\uff1aPython \u7684\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684 doubles \u00a0\u6d4b\u8bd5\u6846\u67b6\u3002 \u5b98\u7f51 freezegun\uff1a\u901a\u8fc7\u4f2a\u9020\u65e5\u671f\u6a21\u5757\u6765\u751f\u6210\u4e0d\u540c\u7684\u65f6\u95f4\u3002 \u5b98\u7f51 httmock\uff1a\u9488\u5bf9 Python 2.6+ \u548c 3.2+ \u751f\u6210 \u4f2a\u9020\u8bf7\u6c42\u7684\u5e93\u3002 \u5b98\u7f51 httpretty\uff1aPython \u7684 HTTP \u8bf7\u6c42 mock \u5de5\u5177\u3002 \u5b98\u7f51 responses\uff1a\u4f2a\u9020 Python \u4e2d\u7684 requests \u5e93\u7684\u4e00\u4e2a\u901a\u7528\u5e93\u3002 \u5b98\u7f51 VCR.py\uff1a\u5728\u4f60\u7684\u6d4b\u8bd5\u4e2d\u8bb0\u5f55\u548c\u91cd\u653e HTTP \u4ea4\u4e92\u3002 \u5b98\u7f51 \u5bf9\u8c61\u5de5\u5382 factoryboy\uff1a\u4e00\u4e2a Python \u7528\u7684\u6d4b\u8bd5\u56fa\u4ef6 (test fixtures) \u66ff\u4ee3\u5e93\u3002 \u5b98\u7f51 mixer\uff1a\u53e6\u5916\u4e00\u4e2a\u6d4b\u8bd5\u56fa\u4ef6 (test fixtures) \u66ff\u4ee3\u5e93\uff0c\u652f\u6301 Django, Flask, SQLAlchemy, Peewee \u7b49\u3002 \u5b98\u7f51 modelmommy\uff1a\u4e3a Django \u6d4b\u8bd5\u521b\u5efa\u968f\u673a\u56fa\u4ef6\u3002 \u5b98\u7f51 \u4ee3\u7801\u8986\u76d6\u7387 coverage\uff1a\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u91cf\u3002 \u5b98\u7f51 Codecov\uff1a\u4e00\u4e2a\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u8bd5\u5de5\u5177\uff0c\u4e3a\u5f00\u6e90\u9879\u76ee\u63d0\u4f9b\u514d\u8d39\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u8bd5\u670d\u52a1\u3002 \u5b98\u7f51 \u4f2a\u6570\u636e faker\uff1a\u4e00\u4e2a Python \u5e93\uff0c\u7528\u6765\u751f\u6210\u4f2a\u6570\u636e\u3002 \u5b98\u7f51 fake2db\uff1a\u4f2a\u6570\u636e\u5e93\u751f\u6210\u5668\u3002 \u5b98\u7f51 radar\uff1a\u751f\u6210\u968f\u673a\u7684\u65e5\u671f/\u65f6\u95f4\u3002 \u5b98\u7f51 \u9519\u8bef\u5904\u7406 FuckIt.py\uff1aFuckIt.py \u4f7f\u7528\u6700\u5148\u8fdb\u7684\u6280\u672f\u6765\u4fdd\u8bc1\u4f60\u7684 Python \u4ee3\u7801\u65e0\u8bba\u5bf9\u9519\u90fd\u80fd\u7ee7\u7eed\u8fd0\u884c\u3002 \u5b98\u7f51",
"title": "\u6d4b\u8bd5"
},
{
"location": "/#lint",
"text": "\u8fdb\u884c\u4ee3\u7801\u5206\u6790\uff0c\u89e3\u6790\u548c\u64cd\u4f5c\u4ee3\u7801\u5e93\u7684\u5e93\u548c\u5de5\u5177\u3002 \u4ee3\u7801\u5206\u6790 coala\uff1a\u8bed\u8a00\u72ec\u7acb\u548c\u6613\u4e8e\u6269\u5c55\u7684\u4ee3\u7801\u5206\u6790\u5e94\u7528\u7a0b\u5e8f\u3002 \u5b98\u7f51 code2flow\uff1a\u628a\u4f60\u7684 Python \u548c JavaScript \u4ee3\u7801\u8f6c\u6362\u4e3a\u6d41\u7a0b\u56fe\u3002 \u5b98\u7f51 pycallgraph\uff1a\u8fd9\u4e2a\u5e93\u53ef\u4ee5\u628a\u4f60\u7684 Python \u5e94\u7528\u7684\u6d41\u7a0b(\u8c03\u7528\u56fe)\u8fdb\u884c\u53ef\u89c6\u5316\u3002 \u5b98\u7f51 pysonar2\uff1aPython \u7c7b\u578b\u63a8\u65ad\u548c\u68c0\u7d22\u5de5\u5177\u3002 \u5b98\u7f51 Lint \u5de5\u5177 Flake8\uff1a\u6a21\u5757\u5316\u6e90\u7801\u68c0\u67e5\u5de5\u5177: pep8, pyflakes \u4ee5\u53ca co\u3002 \u5b98\u7f51 Pylint\uff1a\u4e00\u4e2a\u5b8c\u5168\u53ef\u5b9a\u5236\u7684\u6e90\u7801\u5206\u6790\u5668\u3002 \u5b98\u7f51 YAPF: Google \u7684 Python \u4ee3\u7801\u683c\u5f0f\u5316\u5de5\u5177\u3002 \u5b98\u7f51 pylama\uff1aPython \u548c JavaScript \u7684\u4ee3\u7801\u5ba1\u67e5\u5de5\u5177\u3002 \u5b98\u7f51 \u4ee3\u7801\u683c\u5f0f\u5316 autopep8\uff1a\u81ea\u52a8\u683c\u5f0f\u5316 Python \u4ee3\u7801\uff0c\u4ee5\u4f7f\u5176\u7b26\u5408 PEP8 \u89c4\u8303\u3002 \u5b98\u7f51 black\uff1a\u4e00\u4e2a\u575a\u5b9a\u7684 Python \u4ee3\u7801\u683c\u5f0f\u5316\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u4ee3\u7801\u5206\u6790\u548c Lint \u5de5\u5177"
},
{
"location": "/#_52",
"text": "\u7528\u6765\u8fdb\u884c\u4ee3\u7801\u8c03\u8bd5\u7684\u5e93\u3002 \u8c03\u8bd5\u5668 ipdb\uff1aIPython \u542f\u7528\u7684 pdb \u3002 \u5b98\u7f51 pudb\uff1a\u5168\u5c4f\uff0c\u57fa\u4e8e\u63a7\u5236\u53f0\u7684 Python \u8c03\u8bd5\u5668\u3002 \u5b98\u7f51 pyringe\uff1a\u53ef\u4ee5\u5728 Python \u8fdb\u7a0b\u4e2d\u9644\u52a0\u548c\u6ce8\u5165\u4ee3\u7801\u7684\u8c03\u8bd5\u5668\u3002 \u5b98\u7f51 wdb\uff1a\u4e00\u4e2a\u5947\u5f02\u7684 web \u8c03\u8bd5\u5668\uff0c\u901a\u8fc7 WebSockets \u5de5\u4f5c\u3002 \u5b98\u7f51 winpdb\uff1a\u4e00\u4e2a\u5177\u6709\u56fe\u5f62\u7528\u6237\u754c\u9762\u7684 Python \u8c03\u8bd5\u5668\uff0c\u53ef\u4ee5\u8fdb\u884c\u8fdc\u7a0b\u8c03\u8bd5\uff0c\u57fa\u4e8e rpdb2\u3002 \u5b98\u7f51 django-debug-toolbar\uff1a\u4e3a Django \u663e\u793a\u5404\u79cd\u8c03\u8bd5\u4fe1\u606f\u3002 \u5b98\u7f51 django-devserver\uff1a\u4e00\u4e2a Django \u8fd0\u884c\u670d\u52a1\u5668\u7684\u66ff\u4ee3\u54c1\u3002 \u5b98\u7f51 flask-debugtoolbar\uff1adjango-debug-toolbar \u7684 flask \u7248\u3002 \u5b98\u7f51 \u6027\u80fd\u5206\u6790\u5668 lineprofiler\uff1a\u9010\u884c\u6027\u80fd\u5206\u6790\u3002 \u5b98\u7f51 Memory Profiler \uff1a\u76d1\u63a7 Python \u4ee3\u7801\u7684\u5185\u5b58\u4f7f\u7528\u3002 \u5b98\u7f51 \u3001 \u5185\u5b58 profiling\uff1a\u4e00\u4e2a\u4ea4\u4e92\u5f0f Python \u6027\u80fd\u5206\u6790\u5de5\u5177\u3002 \u5b98\u7f51 \u5176\u4ed6 pyelftools\uff1a\u89e3\u6790\u548c\u5206\u6790 ELF \u6587\u4ef6\u4ee5\u53ca DWARF \u8c03\u8bd5\u4fe1\u606f\u3002 \u5b98\u7f51 python-statsd\uff1a statsd \u670d\u52a1\u5668\u7684 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51",
"title": "\u8c03\u8bd5\u5de5\u5177"
},
{
"location": "/#_53",
"text": "\u7528\u6765\u8fdb\u884c\u79d1\u5b66\u8ba1\u7b97\u548c\u6570\u636e\u5206\u6790\u7684\u5e93\u3002 astropy\uff1a\u4e00\u4e2a\u5929\u6587\u5b66 Python \u5e93\u3002 \u5b98\u7f51 bcbio-nextgen \uff1a\u8fd9\u4e2a\u5de5\u5177\u7bb1\u4e3a\u5168\u81ea\u52a8\u9ad8\u901a\u91cf\u6d4b\u5e8f\u5206\u6790\u63d0\u4f9b\u7b26\u5408\u6700\u4f73\u5b9e\u8df5\u7684\u5904\u7406\u6d41\u7a0b\u3002 \u5b98\u7f51 bccb\uff1a\u751f\u7269\u5206\u6790\u76f8\u5173\u4ee3\u7801\u96c6\u5408\u3002 \u5b98\u7f51 Biopython\uff1aBiopython \u662f\u4e00\u7ec4\u53ef\u4ee5\u514d\u8d39\u4f7f\u7528\u7684\u7528\u6765\u8fdb\u884c\u751f\u7269\u8ba1\u7b97\u7684\u5de5\u5177\u3002 \u5b98\u7f51 blaze \uff1aNumPy \u548c Pandas \u7684\u5927\u6570\u636e\u63a5\u53e3\u3002 \u5b98\u7f51 cclib \uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790\u548c\u89e3\u91ca\u8ba1\u7b97\u5316\u5b66\u8f6f\u4ef6\u5305\u8f93\u51fa\u7ed3\u679c\u7684\u5e93\u3002 \u5b98\u7f51 NetworkX\uff1a\u4e00\u4e2a\u4e3a\u590d\u6742\u7f51\u7edc\u8bbe\u8ba1\u7684\u9ad8\u6027\u80fd\u8f6f\u4ef6\u3002 \u5b98\u7f51 Neupy\uff1a\u6267\u884c\u548c\u6d4b\u8bd5\u5404\u79cd\u4e0d\u540c\u7684\u4eba\u5de5\u795e\u7ecf\u7f51\u7edc\u7b97\u6cd5\u3002 \u5b98\u7f51 Numba\uff1aPython JIT (just in time) \u7f16\u8bd1\u5668\uff0c\u9488\u5bf9\u79d1\u5b66\u7528\u7684 Python \uff0c\u7531 Cython \u548c NumPy \u7684\u5f00\u53d1\u8005\u5f00\u53d1\u3002 \u5b98\u7f51 NumPy \uff1a\u4f7f\u7528 Python \u8fdb\u884c\u79d1\u5b66\u8ba1\u7b97\u7684\u57fa\u7840\u5305\u3002 \u5b98\u7f51 Open Babel\uff1a\u4e00\u4e2a\u5316\u5b66\u5de5\u5177\u7bb1\uff0c\u7528\u6765\u63cf\u8ff0\u591a\u79cd\u5316\u5b66\u6570\u636e\u3002 \u5b98\u7f51 Open Mining \uff1a\u4f7f\u7528 Python \u6316\u6398\u5546\u4e1a\u60c5\u62a5 (BI) (Pandas web \u63a5\u53e3)\u3002 \u5b98\u7f51 orange \uff1a\u901a\u8fc7\u53ef\u89c6\u5316\u7f16\u7a0b\u6216 Python \u811a\u672c\u8fdb\u884c\u6570\u636e\u6316\u6398\uff0c\u6570\u636e\u53ef\u89c6\u5316\uff0c\u5206\u6790\u548c\u673a\u5668\u5b66\u4e60\u3002 \u5b98\u7f51 Pandas\uff1a\u63d0\u4f9b\u9ad8\u6027\u80fd\uff0c\u6613\u7528\u7684\u6570\u636e\u7ed3\u6784\u548c\u6570\u636e\u5206\u6790\u5de5\u5177\u3002 \u5b98\u7f51 PyDy\uff1aPyDy \u662f Python Dynamics \u7684\u7f29\u5199\uff0c\u7528\u6765\u4e3a\u52a8\u529b\u5b66\u8fd0\u52a8\u5efa\u6a21\u5de5\u4f5c\u6d41\u7a0b\u63d0\u4f9b\u5e2e\u52a9\uff0c \u57fa\u4e8e NumPy, SciPy, IPython \u548c matplotlib\u3002 \u5b98\u7f51 PyMC \uff1a\u9a6c\u5c14\u79d1\u592b\u94fe\u8499\u7279\u5361\u6d1b\u91c7\u6837\u5de5\u5177\u3002 \u5b98\u7f51 RDKit\uff1a\u5316\u5b66\u4fe1\u606f\u5b66\u548c\u673a\u5668\u5b66\u4e60\u8f6f\u4ef6\u3002 \u5b98\u7f51 SciPy \uff1a\u7531\u4e00\u4e9b\u57fa\u4e8e Python \uff0c\u7528\u4e8e\u6570\u5b66\uff0c\u79d1\u5b66\u548c\u5de5\u7a0b\u7684\u5f00\u6e90\u8f6f\u4ef6\u6784\u6210\u7684\u751f\u6001\u7cfb\u7edf\u3002 \u5b98\u7f51 statsmodels \uff1a\u7edf\u8ba1\u5efa\u6a21\u548c\u8ba1\u91cf\u7ecf\u6d4e\u5b66\u3002 \u5b98\u7f51 SymPy\uff1a\u4e00\u4e2a\u7528\u4e8e\u7b26\u53f7\u6570\u5b66\u7684 Python \u5e93\u3002 \u5b98\u7f51 zipline\uff1a\u4e00\u4e2a Python \u7b97\u6cd5\u4ea4\u6613\u5e93\u3002 \u5b98\u7f51 Bayesian-belief-networks \uff1a\u4f18\u96c5\u7684\u8d1d\u53f6\u65af\u4fe1\u5ff5\u7f51\u7edc\u6846\u67b6\u3002 \u5b98\u7f51",
"title": "\u79d1\u5b66\u8ba1\u7b97\u548c\u6570\u636e\u5206\u6790"
},
{
"location": "/#_54",
"text": "\u8fdb\u884c\u6570\u636e\u53ef\u89c6\u5316\u7684\u5e93\u3002 \u53c2\u89c1: awesome-javascript \u3002 matplotlib\uff1a\u4e00\u4e2a Python 2D \u7ed8\u56fe\u5e93\u3002 \u5b98\u7f51 bokeh\uff1a\u7528 Python \u8fdb\u884c\u4ea4\u4e92\u5f0f web \u7ed8\u56fe\u3002 \u5b98\u7f51 ggplot\uff1aggplot2 \u7ed9 R \u63d0\u4f9b\u7684 API \u7684 Python \u7248\u672c\u3002 \u5b98\u7f51 plotly\uff1a\u534f\u540c Python \u548c matplotlib \u5de5\u4f5c\u7684 web \u7ed8\u56fe\u5e93\u3002 \u5b98\u7f51 pyecharts\uff1a\u57fa\u4e8e\u767e\u5ea6 Echarts \u7684\u6570\u636e\u53ef\u89c6\u5316\u5e93\u3002 \u5b98\u7f51 pygal\uff1a\u4e00\u4e2a Python SVG \u56fe\u8868\u521b\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 pygraphviz\uff1aGraphviz \u7684 Python \u63a5\u53e3\u3002 \u5b98\u7f51 PyQtGraph\uff1a\u4ea4\u4e92\u5f0f\u5b9e\u65f6 2D/3D/ \u56fe\u50cf\u7ed8\u5236\u53ca\u79d1\u5b66/\u5de5\u7a0b\u5b66\u7ec4\u4ef6\u3002 \u5b98\u7f51 SnakeViz\uff1a\u4e00\u4e2a\u57fa\u4e8e\u6d4f\u89c8\u5668\u7684 Python's cProfile \u6a21\u5757\u8f93\u51fa\u7ed3\u679c\u67e5\u770b\u5de5\u5177\u3002 \u5b98\u7f51 vincent\uff1a\u628a Python \u8f6c\u6362\u4e3a Vega \u8bed\u6cd5\u7684\u8f6c\u6362\u5de5\u5177\u3002 \u5b98\u7f51 VisPy\uff1a\u57fa\u4e8e OpenGL \u7684\u9ad8\u6027\u80fd\u79d1\u5b66\u53ef\u89c6\u5316\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u6570\u636e\u53ef\u89c6\u5316"
},
{
"location": "/#_55",
"text": "\u8ba1\u7b97\u673a\u89c6\u89c9\u5e93\u3002 OpenCV\uff1a\u5f00\u6e90\u8ba1\u7b97\u673a\u89c6\u89c9\u5e93\u3002 \u5b98\u7f51 pyocr\uff1aTesseract \u548c Cuneiform \u7684\u5305\u88c5\u5e93\u3002 \u5b98\u7f51 pytesseract\uff1a Google Tesseract OCR \u7684\u53e6\u4e00\u5305\u88c5\u5e93\u3002 \u5b98\u7f51 SimpleCV \uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u8ba1\u7b97\u673a\u89c6\u89c9\u5e94\u7528\u7684\u5f00\u6e90\u6846\u67b6\u3002 \u5b98\u7f51",
"title": "\u8ba1\u7b97\u673a\u89c6\u89c9"
},
{
"location": "/#_56",
"text": "\u673a\u5668\u5b66\u4e60\u5e93\u3002 \u53c2\u89c1: awesome-machine-learning . Caffe: \u4e00\u4e2a Caffe \u7684 python \u63a5\u53e3\u3002 \u5b98\u7f51 Caffe2 \uff1a\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684\uff0c\u6a21\u5757\u5316\u7684\uff0c\u53ef\u6269\u5c55\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002 \u5b98\u7f51 Crab\uff1a\u7075\u6d3b\u3001\u5feb\u901f\u7684\u63a8\u8350\u5f15\u64ce\u3002 \u5b98\u7f51 gensim\uff1a\u4eba\u6027\u5316\u7684\u8bdd\u9898\u5efa\u6a21\u5e93\u3002 \u5b98\u7f51 hebel\uff1aGPU \u52a0\u901f\u7684\u6df1\u5ea6\u5b66\u4e60\u5e93\u3002 \u5b98\u7f51 keras : \u4ee5 tensorflow/theano/CNTK \u4e3a\u540e\u7aef\u7684\u6df1\u5ea6\u5b66\u4e60\u5c01\u88c5\u5e93\uff0c\u5feb\u901f\u4e0a\u624b\u795e\u7ecf\u7f51\u7edc\u3002 \u5b98\u7f51 MXNet \uff1a\u4e00\u4e2a\u9ad8\u6548\u548c\u7075\u6d3b\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002 \u5b98\u7f51 NuPIC\uff1a\u667a\u80fd\u8ba1\u7b97 Numenta \u5e73\u53f0\u3002 \u5b98\u7f51 pattern\uff1aPython \u7f51\u7edc\u6316\u6398\u6a21\u5757\u3002 \u5b98\u7f51 PyBrain \uff1a\u53e6\u4e00\u4e2a Python \u673a\u5668\u5b66\u4e60\u5e93\u3002 \u5b98\u7f51 pydeep\uff1aPython \u6df1\u5ea6\u5b66\u4e60\u5e93\u3002 \u5b98\u7f51 Pylearn2 \uff1a\u4e00\u4e2a\u57fa\u4e8e Theano \u7684\u673a\u5668\u5b66\u4e60\u5e93\u3002 \u5b98\u7f51 python-recsys \uff1a\u4e00\u4e2a\u7528\u6765\u5b9e\u73b0\u63a8\u8350\u7cfb\u7edf\u7684 Python \u5e93\u3002 \u5b98\u7f51 Pytorch \uff1a\u4e00\u4e2a\u5177\u6709\u5f20\u91cf\u548c\u52a8\u6001\u795e\u7ecf\u7f51\u7edc\uff0c\u5e76\u6709\u5f3a\u5927 GPU \u52a0\u901f\u80fd\u529b\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002 \u5b98\u7f51 scikit-learn\uff1a\u57fa\u4e8e SciPy \u6784\u5efa\u7684\u673a\u5668\u5b66\u4e60 Python \u6a21\u5757\u3002 \u5b98\u7f51 skflow\uff1a\u4e00\u4e2a TensorFlow \u7684\u7b80\u5316\u63a5\u53e3(\u6a21\u4eff scikit-learn)\u3002 \u5b98\u7f51 TensorFlow \uff1a\u8c37\u6b4c\u5f00\u6e90\u7684\u6700\u53d7\u6b22\u8fce\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002 \u5b98\u7f51 Theano\uff1a\u4e00\u4e2a\u5feb\u901f\u6570\u503c\u8ba1\u7b97\u5e93\u3002 \u5b98\u7f51 vowpalporpoise\uff1a\u8f7b\u91cf\u7ea7 Vowpal Wabbit \u7684 Python \u5c01\u88c5\u3002 \u5b98\u7f51",
"title": "\u673a\u5668\u5b66\u4e60"
},
{
"location": "/#mapreduce",
"text": "MapReduce \u6846\u67b6\u548c\u5e93\u3002 dpark \uff1aSpark \u7684 Python \u514b\u9686\u7248\uff0c\u4e00\u4e2a\u7c7b\u4f3c MapReduce \u7684\u6846\u67b6\u3002 \u5b98\u7f51 dumbo\uff1a\u8fd9\u4e2a Python \u6a21\u5757\u53ef\u4ee5\u8ba9\u4eba\u8f7b\u677e\u7684\u7f16\u5199\u548c\u8fd0\u884c Hadoop \u7a0b\u5e8f\u3002 \u5b98\u7f51 luigi\uff1a\u8fd9\u4e2a\u6a21\u5757\u5e2e\u4f60\u6784\u5efa\u6279\u5904\u7406\u4f5c\u4e1a\u7684\u590d\u6742\u6d41\u6c34\u7ebf\u3002 \u5b98\u7f51 mrjob\uff1a\u5728 Hadoop \u6216 Amazon Web Services \u4e0a\u8fd0\u884c MapReduce \u4efb\u52a1\u3002 \u5b98\u7f51 PySpark\uff1aSpark \u7684 Python API \u3002 \u5b98\u7f51 streamparse\uff1a\u8fd0\u884c\u9488\u5bf9\u4e8b\u5b9e\u6570\u636e\u6d41\u7684 Python \u4ee3\u7801\u3002\u96c6\u6210\u4e86 Apache Storm \u3002 \u5b98\u7f51",
"title": "MapReduce"
},
{
"location": "/#_57",
"text": "\u4f7f\u7528 Python \u8fdb\u884c\u51fd\u6570\u5f0f\u7f16\u7a0b\u3002 CyToolz\uff1aToolz \u7684 Cython \u5b9e\u73b0 : \u9ad8\u6027\u80fd\u51fd\u6570\u5f0f\u5de5\u5177\u3002 \u5b98\u7f51 fn.py\uff1a\u5728 Python \u4e2d\u8fdb\u884c\u51fd\u6570\u5f0f\u7f16\u7a0b : \u5b9e\u73b0\u4e86\u4e00\u4e9b\u4eab\u53d7\u51fd\u6570\u5f0f\u7f16\u7a0b\u7f3a\u5931\u7684\u529f\u80fd\u3002 \u5b98\u7f51 funcy\uff1a\u70ab\u9177\u53c8\u5b9e\u7528\u7684\u51fd\u6570\u5f0f\u5de5\u5177\u3002 \u5b98\u7f51 Toolz\uff1a\u4e00\u7ec4\u7528\u4e8e\u8fed\u4ee3\u5668\uff0c\u51fd\u6570\u548c\u5b57\u5178\u7684\u51fd\u6570\u5f0f\u7f16\u7a0b\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u51fd\u6570\u5f0f\u7f16\u7a0b"
},
{
"location": "/#api",
"text": "\u7528\u6765\u8bbf\u95ee\u7b2c\u4e09\u65b9 API \u7684\u5e93\u3002 \u53c2\u89c1\uff1a List of Python API Wrappers and Libraries \u3002 apache-libcloud\uff1a\u4e00\u4e2a\u4e3a\u5404\u79cd\u4e91\u8bbe\u8ba1\u7684 Python \u5e93\u3002 \u5b98\u7f51 boto\uff1aAmazon Web Services \u7684 Python \u63a5\u53e3\u3002 \u5b98\u7f51 django-wordpress\uff1aWordPress models and views for Django. \u5b98\u7f51 facebook-sdk\uff1aFacebook \u5e73\u53f0\u7684 Python SDK. \u5b98\u7f51 facepy\uff1aFacepy \u8ba9\u548c Facebook's Graph API \u7684\u4ea4\u4e92\u53d8\u5f97\u66f4\u5bb9\u6613\u3002 \u5b98\u7f51 gmail\uff1aGmail \u7684 Python \u63a5\u53e3\u3002 \u5b98\u7f51 google-api-python-client\uff1aPython \u7528\u7684 Google APIs \u5ba2\u6237\u7aef\u5e93\u3002 \u5b98\u7f51 gspread\uff1aGoogle \u7535\u5b50\u8868\u683c\u7684 Python API. \u5b98\u7f51 twython\uff1aTwitter API \u7684\u5c01\u88c5\u3002 \u5b98\u7f51",
"title": "\u7b2c\u4e09\u65b9 API"
},
{
"location": "/#devops",
"text": "\u7528\u4e8e DevOps \u7684\u8f6f\u4ef6\u548c\u5e93\u3002 Ansible\uff1a\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684 IT \u81ea\u52a8\u5316\u5e73\u53f0\u3002 \u5b98\u7f51 SaltStack\uff1a\u57fa\u7840\u8bbe\u65bd\u81ea\u52a8\u5316\u548c\u7ba1\u7406\u7cfb\u7edf\u3002 \u5b98\u7f51 OpenStack\uff1a\u7528\u4e8e\u6784\u5efa\u79c1\u6709\u548c\u516c\u6709\u4e91\u7684\u5f00\u6e90\u8f6f\u4ef6\u3002 \u5b98\u7f51 Docker Compose\uff1a\u5feb\u901f\uff0c\u5206\u79bb\u7684\u5f00\u53d1\u73af\u5883\uff0c\u4f7f\u7528 Docker\u3002 \u5b98\u7f51 Fabric\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0cPython \u98ce\u683c\u7684\u5de5\u5177\uff0c\u7528\u6765\u8fdb\u884c\u8fdc\u7a0b\u6267\u884c\u548c\u90e8\u7f72\u3002 \u5b98\u7f51 cuisine\uff1a\u4e3a Fabric \u63d0\u4f9b\u4e00\u7cfb\u5217\u9ad8\u7ea7\u51fd\u6570\u3002 \u5b98\u7f51 Fabtools\uff1a\u4e00\u4e2a\u7528\u6765\u7f16\u5199\u8d85\u8d5e\u7684 Fabric \u6587\u4ef6\u7684\u5de5\u5177\u3002 \u5b98\u7f51 gitapi\uff1aGit \u7684\u7eaf Python API\u3002 \u5b98\u7f51 hgapi\uff1aMercurial \u7684\u7eaf Python API\u3002 \u5b98\u7f51 honcho\uff1a Foreman \u7684 Python \u514b\u9686\u7248\uff0c\u7528\u6765\u7ba1\u7406\u57fa\u4e8e Procfile \u7684\u5e94\u7528\u3002 \u5b98\u7f51 pexpect\uff1aControlling interactive programs in a pseudo-terminal like \u5728\u4e00\u4e2a\u4f2a\u7ec8\u7aef\u4e2d\u63a7\u5236\u4ea4\u4e92\u7a0b\u5e8f\uff0c\u5c31\u50cf GNU expect \u4e00\u6837\u3002 \u5b98\u7f51 psutil\uff1a\u4e00\u4e2a\u8de8\u5e73\u53f0\u8fdb\u7a0b\u548c\u7cfb\u7edf\u5de5\u5177\u6a21\u5757\u3002 \u5b98\u7f51 supervisor\uff1aUNIX \u7684\u8fdb\u7a0b\u63a7\u5236\u7cfb\u7edf\u3002 \u5b98\u7f51",
"title": "DevOps \u5de5\u5177"
},
{
"location": "/#_58",
"text": "\u4efb\u52a1\u8c03\u5ea6\u5e93\u3002 APScheduler\uff1a\u8f7b\u5de7\u4f46\u5f3a\u5927\u7684\u8fdb\u7a0b\u5185\u4efb\u52a1\u8c03\u5ea6\uff0c\u4f7f\u4f60\u53ef\u4ee5\u8c03\u5ea6\u51fd\u6570\u3002 \u5b98\u7f51 django-schedule\uff1a\u4e00\u4e2a Django \u6392\u7a0b\u5e94\u7528\u3002 \u5b98\u7f51 doit\uff1a\u4e00\u4e2a\u4efb\u52a1\u6267\u884c\u548c\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 gunnery\uff1a\u5206\u5e03\u5f0f\u7cfb\u7edf\u4f7f\u7528\u7684\u591a\u7528\u9014\u4efb\u52a1\u6267\u884c\u5de5\u5177 \uff0c\u5177\u6709 web \u4ea4\u4e92\u754c\u9762\u3002 \u5b98\u7f51 Joblib\uff1a\u4e00\u7ec4\u4e3a Python \u63d0\u4f9b\u8f7b\u91cf\u7ea7\u4f5c\u4e1a\u6d41\u6c34\u7ebf\u7684\u5de5\u5177\u3002 \u5b98\u7f51 Plan\uff1a\u5982\u6709\u795e\u52a9\u5730\u7f16\u5199 crontab \u6587\u4ef6\u3002 \u5b98\u7f51 schedule\uff1a\u4eba\u6027\u5316\u7684 Python \u4efb\u52a1\u8c03\u5ea6\u5e93\u3002 \u5b98\u7f51 Spiff\uff1a\u4f7f\u7528\u7eaf Python \u5b9e\u73b0\u7684\u5f3a\u5927\u7684\u5de5\u4f5c\u6d41\u5f15\u64ce\u3002 \u5b98\u7f51 TaskFlow\uff1a\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u4f60\u65b9\u4fbf\u6267\u884c\u4efb\u52a1\u7684 Python \u5e93\uff0c\u4e00\u81f4\u5e76\u4e14\u53ef\u9760\u3002 \u5b98\u7f51 \n*\u00a0 AirFlow\uff1aAirflow \u662fAirbnb\u516c\u53f8\u5f00\u6e90\u7684\uff0c\u662f\u4e00\u4e2a\u5de5\u4f5c\u6d41\u5206\u914d\u7ba1\u7406\u7cfb\u7edf\uff0c\u901a\u8fc7\u6709\u5411\u975e\u5faa\u73af\u56fe\u7684\u65b9\u5f0f\u7ba1\u7406\u4efb\u52a1\u6d41\u7a0b\uff0c\u8bbe\u7f6e\u4efb\u52a1\u4f9d\u8d56\u5173\u7cfb\u548c\u65f6\u95f4\u8c03\u5ea6\u3002 \u5b98\u65b9",
"title": "\u4efb\u52a1\u8c03\u5ea6"
},
{
"location": "/#_59",
"text": "\u4f7f\u7528\u5916\u6765\u51fd\u6570\u63a5\u53e3\u7684\u5e93\u3002 cffi\uff1a\u7528\u6765\u8c03\u7528 C \u4ee3\u7801\u7684\u5916\u6765\u51fd\u6570\u63a5\u53e3\u3002 \u5b98\u7f51 ctypes \uff1a(Python \u6807\u51c6\u5e93) \u7528\u6765\u8c03\u7528 C \u4ee3\u7801\u7684\u5916\u6765\u51fd\u6570\u63a5\u53e3\u3002 \u5b98\u7f51 PyCUDA\uff1aNvidia CUDA API \u7684\u5c01\u88c5\u3002 \u5b98\u7f51 SWIG\uff1a\u7b80\u5316\u7684\u5c01\u88c5\u548c\u63a5\u53e3\u751f\u6210\u5668\u3002 \u5b98\u7f51",
"title": "\u5916\u6765\u51fd\u6570\u63a5\u53e3"
},
{
"location": "/#_60",
"text": "\u8ba9 Python \u66f4\u5feb\u7684\u5e93\u3002 Cython\uff1a\u4f18\u5316\u7684 Python \u9759\u6001\u7f16\u8bd1\u5668\u3002\u4f7f\u7528\u7c7b\u578b\u6df7\u5408\u4f7f Python \u7f16\u8bd1\u6210 C \u6216 C++ \u6a21\u5757\u6765\u83b7\u5f97\u6027\u80fd\u7684\u6781\u5927\u63d0\u5347\u3002 \u5b98\u7f51 PeachPy\uff1a\u5d4c\u5165 Python \u7684 x86-64 \u6c47\u7f16\u5668\u3002\u53ef\u4ee5\u88ab\u7528\u4f5c Python \u5185\u8054\u7684\u6c47\u7f16\u5668\u6216\u8005\u662f\u72ec\u7acb\u7684\u6c47\u7f16\u5668\uff0c\u7528\u4e8e Windows, Linux, OS X, Native Client \u6216\u8005 Go \u3002 \u5b98\u7f51 PyPy\uff1a\u4f7f\u7528 Python \u5b9e\u73b0\u7684 Python\u3002\u89e3\u91ca\u5668\u4f7f\u7528\u9ed1\u9b54\u6cd5\u52a0\u5feb Python \u8fd0\u884c\u901f\u5ea6\u4e14\u4e0d\u9700\u8981\u52a0\u5165\u989d\u5916\u7684\u7c7b\u578b\u4fe1\u606f\u3002 \u5b98\u7f51 Pyston \uff1a\u4f7f\u7528 LLVM \u548c\u73b0\u4ee3 JIT \u6280\u672f\u6784\u5efa\u7684 Python \u5b9e\u73b0\uff0c\u76ee\u6807\u662f\u4e3a\u4e86\u83b7\u5f97\u5f88\u597d\u7684\u6027\u80fd\u3002 \u5b98\u7f51 Stackless Python\uff1a\u4e00\u4e2a\u5f3a\u5316\u7248\u7684 Python\u3002 \u5b98\u7f51",
"title": "\u9ad8\u6027\u80fd"
},
{
"location": "/#windows",
"text": "\u5728 Windows \u5e73\u53f0\u4e0a\u8fdb\u884c Python \u7f16\u7a0b\u3002 Python(x,y)\uff1a\u9762\u5411\u79d1\u5b66\u5e94\u7528\u7684 Python \u53d1\u884c\u7248\uff0c\u57fa\u4e8e Qt \u548c Spyder\u3002 \u5b98\u7f51 pythonlibs\uff1a\u975e\u5b98\u65b9\u7684 Windows \u5e73\u53f0 Python \u6269\u5c55\u4e8c\u8fdb\u5236\u5305\u3002 \u5b98\u7f51 PythonNet\uff1aPython \u4e0e .NET \u516c\u5171\u8bed\u8a00\u8fd0\u884c\u5e93 (CLR)\u7684\u96c6\u6210\u3002 \u5b98\u7f51 PyWin32\uff1a\u9488\u5bf9 Windows \u7684 Python \u6269\u5c55\u3002 \u5b98\u7f51 WinPython\uff1aWindows 7/8 \u7cfb\u7edf\u4e0b\u4fbf\u643a\u5f0f\u5f00\u53d1\u73af\u5883\u3002 \u5b98\u7f51",
"title": "\u5fae\u8f6f\u7684 Windows \u5e73\u53f0"
},
{
"location": "/#sdn",
"text": "\u7528\u6765\u8fdb\u884c\u7f51\u7edc\u53ef\u89c6\u5316\u548c SDN(\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc)\u7684\u5de5\u5177\u548c\u5e93\u3002 Mininet\uff1a\u4e00\u6b3e\u6d41\u884c\u7684\u7f51\u7edc\u6a21\u62df\u5668\u4ee5\u53ca\u7528 Python \u7f16\u5199\u7684 API\u3002 \u5b98\u7f51 POX\uff1a\u4e00\u4e2a\u9488\u5bf9\u57fa\u4e8e Python \u7684\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc\u5e94\u7528\uff08\u4f8b\u5982 OpenFlow SDN \u63a7\u5236\u5668\uff09\u7684\u5f00\u6e90\u5f00\u53d1\u5e73\u53f0\u3002 \u5b98\u7f51 Pyretic\uff1a\u706b\u70ed\u7684 SDN \u7f16\u7a0b\u8bed\u8a00\u4e2d\u7684\u4e00\u5458\uff0c\u4e3a\u7f51\u7edc\u4ea4\u6362\u673a\u548c\u6a21\u62df\u5668\u63d0\u4f9b\u5f3a\u5927\u7684\u62bd\u8c61\u80fd\u529b\u3002 \u5b98\u7f51 SDX Platform\uff1a\u57fa\u4e8e SDN \u7684 IXP \u5b9e\u73b0\uff0c\u5f71\u54cd\u4e86 Mininet, POX \u548c Pyretic\u3002 \u5b98\u7f51 NRU\uff1a\u4e00\u4e2a\u57fa\u4e8e\u7ec4\u4ef6\u7684\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc\u6846\u67b6\u3002 \u5b98\u7f51",
"title": "\u7f51\u7edc\u53ef\u89c6\u5316\u548c SDN"
},
{
"location": "/#_61",
"text": "\u7528\u6765\u5bf9\u786c\u4ef6\u8fdb\u884c\u7f16\u7a0b\u7684\u5e93\u3002 ino\uff1a\u64cd\u4f5c Arduino \u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002 \u5b98\u7f51 Pyro\uff1aPython \u673a\u5668\u4eba\u7f16\u7a0b\u5e93\u3002 \u5b98\u7f51 PyUserInput\uff1a\u8de8\u5e73\u53f0\u7684\uff0c\u63a7\u5236\u9f20\u6807\u548c\u952e\u76d8\u7684\u6a21\u5757\u3002 \u5b98\u7f51 scapy\uff1a\u4e00\u4e2a\u975e\u5e38\u68d2\u7684\u64cd\u4f5c\u6570\u636e\u5305\u7684\u5e93\u3002 \u5b98\u7f51 wifi\uff1a\u4e00\u4e2a Python \u5e93\u548c\u547d\u4ee4\u884c\u5de5\u5177\u7528\u6765\u5728 Linux \u5e73\u53f0\u4e0a\u64cd\u4f5c WiFi\u3002 \u5b98\u7f51 Pingo\uff1aPingo \u4e3a\u7c7b\u4f3c Raspberry Pi\uff0cpcDuino\uff0c Intel Galileo \u7b49\u8bbe\u5907\u63d0\u4f9b\u7edf\u4e00\u7684 API \u7528\u4ee5\u7f16\u7a0b\u3002 \u5b98\u7f51",
"title": "\u786c\u4ef6"
},
{
"location": "/#_62",
"text": "\u5e2e\u52a9\u4ece Python 2 \u5411 Python 3 \u8fc1\u79fb\u7684\u5e93\u3002 Python-Future\uff1a\u8fd9\u5c31\u662f Python 2 \u548c Python 3 \u4e4b\u95f4\u4e22\u5931\u7684\u90a3\u4e2a\u517c\u5bb9\u6027\u5c42\u3002 \u5b98\u7f51 Python-Modernize\uff1a\u4f7f Python \u4ee3\u7801\u66f4\u52a0\u73b0\u4ee3\u5316\u4ee5\u4fbf\u6700\u7ec8\u8fc1\u79fb\u5230 Python 3\u3002 \u5b98\u7f51 Six\uff1aPython 2 \u548c 3 \u7684\u517c\u5bb9\u6027\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u517c\u5bb9\u6027"
},
{
"location": "/#_63",
"text": "\u4e0d\u5c5e\u4e8e\u4e0a\u9762\u4efb\u4f55\u4e00\u4e2a\u7c7b\u522b\uff0c\u4f46\u662f\u975e\u5e38\u6709\u7528\u7684\u5e93\u3002 blinker\uff1a\u4e00\u4e2a\u5feb\u901f\u7684 Python \u8fdb\u7a0b\u5185\u4fe1\u53f7/\u4e8b\u4ef6\u5206\u53d1\u7cfb\u7edf\u3002 \u5b98\u7f51 itsdangerous\uff1a\u4e00\u7cfb\u5217\u8f85\u52a9\u5de5\u5177\u7528\u6765\u5c06\u53ef\u4fe1\u7684\u6570\u636e\u4f20\u5165\u4e0d\u53ef\u4fe1\u7684\u73af\u5883\u3002 \u5b98\u7f51 pluginbase\uff1a\u4e00\u4e2a\u7b80\u5355\u4f46\u662f\u975e\u5e38\u7075\u6d3b\u7684 Python \u63d2\u4ef6\u7cfb\u7edf\u3002 \u5b98\u7f51 Pychievements\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u548c\u8ffd\u8e2a\u6210\u5c31\u7684 Python \u6846\u67b6\u3002 \u5b98\u7f51 Tryton \uff1a\u4e00\u4e2a\u901a\u7528\u5546\u52a1\u6846\u67b6\u3002 \u5b98\u7f51",
"title": "\u6742\u9879"
},
{
"location": "/#_64",
"text": "Python \u5b9e\u73b0\u7684\u7b97\u6cd5\u548c\u8bbe\u8ba1\u6a21\u5f0f\u3002 algorithms \uff1a\u4e00\u4e2a Python \u7b97\u6cd5\u6a21\u5757\u3002 \u5b98\u7f51 python-patterns\uff1aPython \u8bbe\u8ba1\u6a21\u5f0f\u7684\u96c6\u5408\u3002 \u5b98\u7f51 sortedcontainers\uff1a\u5feb\u901f\uff0c\u7eaf Python \u5b9e\u73b0\u7684 SortedList\uff0cSortedDict \u548c SortedSet \u7c7b\u578b\u3002 \u5b98\u7f51",
"title": "\u7b97\u6cd5\u548c\u8bbe\u8ba1\u6a21\u5f0f"
},
{
"location": "/#_65",
"text": "\u7f16\u8f91\u5668\u548c IDE \u7684\u63d2\u4ef6 Emacs Elpy\uff1aEmacs Python \u5f00\u53d1\u73af\u5883\u3002 \u5b98\u7f51 Sublime Text SublimeJEDI\uff1a\u4e00\u4e2a Sublime Text \u63d2\u4ef6\uff0c\u7528\u6765\u4f7f\u7528\u8d85\u8d5e\u7684\u81ea\u52a8\u8865\u5168\u5e93 Jedi\u3002 \u5b98\u7f51 Anaconda\uff1aAnaconda \u628a\u4f60\u7684 Sublime Text 3 \u53d8\u6210\u4e00\u4e2a\u529f\u80fd\u9f50\u5168\u7684 Python IDE\u3002 \u5b98\u7f51 Vim YouCompleteMe \uff1a\u5f15\u5165\u57fa\u4e8e Jedi \u7684 Python \u81ea\u52a8\u8865\u5168\u5f15\u64ce\u3002 \u5b98\u7f51 Jedi-vim\uff1a\u7ed1\u5b9a Vim \u548c Jedi \u81ea\u52a8\u8865\u5168\u5e93\u5bf9 Python \u8fdb\u884c\u81ea\u52a8\u8865\u5168\u3002 \u5b98\u7f51 Python-mode\uff1a\u5c06 Vim \u53d8\u6210 Python IDE \u7684\u4e00\u6b3e\u591a\u5408\u4e00\u63d2\u4ef6\u3002 \u5b98\u7f51 Visual Studio PTVS\uff1aVisual Studio \u7684 Python \u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u7f16\u8f91\u5668\u63d2\u4ef6"
},
{
"location": "/#_66",
"text": "\u6d41\u884c\u7684 Python \u96c6\u6210\u5f00\u53d1\u73af\u5883\u3002 PyCharm\uff1a\u5546\u4e1a\u5316\u7684 Python IDE \uff0c\u7531 JetBrains \u5f00\u53d1\u3002\u4e5f\u6709\u514d\u8d39\u7684\u793e\u533a\u7248\u63d0\u4f9b\u3002 \u5b98\u7f51 LiClipse\uff1a\u57fa\u4e8e Eclipse \u7684\u514d\u8d39\u591a\u8bed\u8a00 IDE \u3002\u4f7f\u7528 PyDev \u6765\u652f\u6301 Python \u3002 \u5b98\u7f51 Spyder\uff1a\u5f00\u6e90 Python IDE\u3002 \u5b98\u7f51",
"title": "\u96c6\u6210\u5f00\u53d1\u73af\u5883"
},
{
"location": "/#_67",
"text": "\u7528\u4e8e\u5f00\u53d1\u804a\u5929\u673a\u5668\u4eba\u7684\u5e93 Errbot\uff1a\u6700\u7b80\u5355\u548c\u6700\u6d41\u884c\u7684\u804a\u5929\u673a\u5668\u4eba\u7528\u6765\u5b9e\u73b0\u81ea\u52a8\u804a\u5929\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u81ea\u52a8\u804a\u5929\u5de5\u5177"
},
{
"location": "/#_68",
"text": "\u5728\u7ebf\u5de5\u5177\u548c\u7b80\u5316\u5f00\u53d1\u7684 API \u3002",
"title": "\u670d\u52a1"
},
{
"location": "/#_69",
"text": "Tushare \uff1a\u4e00\u4e2a\u53ef\u4ee5\u63d0\u4f9b\u514d\u8d39\u80a1\u7968\u3001\u57fa\u91d1\u3001\u671f\u8d27\u3001\u6e2f\u80a1\u7b49\u91d1\u878d\u6570\u636e\u7684 Python \u5f00\u6e90\u6570\u636e\u3002 \u5b98\u7f51 Ta-Lib \uff1a\u91d1\u878d\u6570\u636e\u6280\u672f\u5206\u6790\u5e93\uff0c\u53ef\u4ee5\u4f9d\u636e\u539f\u59cb\u91d1\u878d\u6570\u636e\u8ba1\u7b97\u5404\u79cd\u6280\u672f\u6307\u6807,\u8ba1\u7b97\u6027\u80fd\u6bd4\u8f83\u4f18\u5f02\u3002 \u5b98\u7f51",
"title": "\u91d1\u878d\u6570\u636e"
},
{
"location": "/#_70",
"text": "\u53c2\u89c1: awesome-CIandCD . Travis CI\uff1a\u4e00\u4e2a\u6d41\u884c\u7684\u5de5\u5177\uff0c\u4e3a\u4f60\u7684\u5f00\u6e90\u548c \u79c1\u4eba \u9879\u76ee\u63d0\u4f9b\u6301\u7eed\u96c6\u6210\u670d\u52a1\u3002(\u4ec5\u652f\u6301 GitHub) \u5b98\u7f51 CircleCI\uff1a\u4e00\u4e2a\u6301\u7eed\u96c6\u6210\u5de5\u5177\uff0c\u53ef\u4ee5\u975e\u5e38\u5feb\u901f\u7684\u8fdb\u884c\u5e76\u884c\u6d4b\u8bd5\u3002 (\u4ec5\u652f\u6301 GitHub) \u5b98\u7f51 Vexor CI\uff1a\u4e00\u4e2a\u4e3a\u79c1\u4eba app \u63d0\u4f9b\u6301\u7eed\u96c6\u6210\u7684\u5de5\u5177\uff0c\u652f\u6301\u6309\u5206\u949f\u4ed8\u8d39\u3002 \u5b98\u7f51 Wercker\uff1a\u57fa\u4e8e Docker \u5e73\u53f0\uff0c\u7528\u6765\u6784\u5efa\u548c\u90e8\u7f72\u5fae\u670d\u52a1\u3002 \u5b98\u7f51",
"title": "\u6301\u7eed\u96c6\u6210"
},
{
"location": "/#_71",
"text": "Codacy\uff1a\u81ea\u52a8\u5316\u4ee3\u7801\u5ba1\u67e5\uff0c\u66f4\u52a0\u5feb\u901f\u7684\u53d1\u5e03\u9ad8\u8d28\u91cf\u4ee3\u7801\u3002\u5bf9\u4e8e\u5f00\u6e90\u9879\u76ee\u662f\u514d\u8d39\u7684\u3002 \u5b98\u7f51 QuantifiedCode\uff1a\u4e00\u4e2a\u6570\u636e\u9a71\u52a8\u3001\u81ea\u52a8\u3001\u6301\u7eed\u7684\u4ee3\u7801\u5ba1\u67e5\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u4ee3\u7801\u8d28\u91cf"
},
{
"location": "/#_72",
"text": "\u5728\u8fd9\u91cc\u53ef\u4ee5\u627e\u5230\u65b0\u7684 Python \u5e93\u3002",
"title": "\u8d44\u6e90"
},
{
"location": "/#_73",
"text": "r/Python CoolGithubProjects Django Packages Full Stack Python Python 3 Wall of Superpowers Python Hackers Python ZEEF Trending Python repositories on GitHub today PyPI Ranking",
"title": "\u7f51\u7ad9"
},
{
"location": "/#_74",
"text": "Import Python Newsletter Pycoder's Weekly Python Weekly",
"title": "\u5468\u520a"
},
{
"location": "/#twitter",
"text": "@codetengu @getpy @planetpython @pycoders @pypi @pythontrending @PythonWeekly",
"title": "Twitter"
},
{
"location": "/#_75",
"text": "Scipy-lecture-notes \uff1a\u5982\u4f55\u7528 Python \u6765\u505a\u5b66\u672f\uff1f \u5b98\u7f51 SScientific-python-lectures \uff1aPython \u79d1\u5b66\u8ba1\u7b97\u7684\u8d44\u6599\u3002 \u5b98\u7f51 Mario-Level-1 \uff1a\u7528 Python \u548c Pygame \u5199\u7684\u8d85\u7ea7\u9a6c\u91cc\u5965\u7b2c\u4e00\u5173\u3002 \u5b98\u7f51 Python Koans \uff1aPython \u7684\u4ea4\u4e92\u5f0f\u5b66\u4e60\u5de5\u5177\u3002 \u5b98\u7f51 Minecraft \uff1a\u7528 python \u5199\u7684 Minecraft \u6e38\u620f\u3002 \u5b98\u7f51 pycrumbs \uff1aPython \u8d44\u6e90\u5927\u5168\u3002 \u5b98\u7f51 python-patterns \uff1a\u4f7f\u7528 python \u5b9e\u73b0\u8bbe\u8ba1\u6a21\u5f0f\u3002 \u5b98\u7f51 Projects \uff1aPython \u9879\u76ee\u5927\u96c6\u5408\u3002 \u5b98\u7f51 The Hitchhiker\u2019s Guide to Python \uff1a\u65c5\u884c\u8005\u7684 Python \u5b66\u4e60\u6307\u5357\u3002 \u5b98\u7f51 Code Like a Pythonista: Idiomatic Python \uff1a\u5982\u4f55\u50cf Python \u9ad8\u624b(Pythonista)\u4e00\u6837\u7f16\u7a0b\u3002 \u5b98\u7f51",
"title": "\u5b66\u4e60\u6307\u5357"
}
]
}