写了一个Python模块,要求打包发布,供同事们使用,好吧,查了一下,网上大部分教程没有一个能把话说明白,不过最后还是解决了,特此记录一下,

以免下次遇到同样问题,也帮助其他有缘人,哈哈。

首先看一下项目结构:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfEAAAC7CAIAAAD65DCUAAAgAElEQVR4Ae2dd1RbV7bw71VBBYFFR9hUgyG40U0HQ4xrhhTXOI4zieNMZjKZ9+Zba9a8teaP+XfWem9ayszEScbJJDZuabbBNgaMscGAGxiDqBIIIySQQAj19h2VKwSi2lR5a2n5nnvuKfv8rrzvYZ9z98Yzc7Zi8AECQAAIAAGXIEByiVHAIIAAEAACQMBMAHQ6/A6AABAAAq5DAHS669xLGAkQAAJAAHQ6/AaAABAAAq5DAHS669xLGAkQAAJAgLK8ELiF7fuv12PdzEJpHn/75++7tctLPpAGCAABILCsCZBDwsKXkYAGWevd+/cfC5kxL/gOP6rhygzLSDgQBQgAASCw3AksyDx9995DjuPmtbc2N9x3zJk6bTJoFDKpdFQ/dRG4AgSAABAAAlMQWAx7enhU9OakLVMIANlAAAgAASAwbwSmnKe/f/wYnU537kelUv3zxBfO+dPnrAmLQF/nMpfPn3bOnDqH7BmZvjMvcZ0/k2SQ9zZVXym9/0RtIspTvGJzX8qLD2dTiRwMk1R+8tntQbMFh8yOyd6VG7fWl0HCDOrh/o4HFcXVPSpbbZwWGFewPWNjsCfVpBK31l4pucNTGG3tICv/b17DLnx+x2/rrowXApm4Qd559evz9UMGSmDeB8cSnpz++HwnIQfOijvy60J6+Uef10rNDTxly2NDgBQQAAJAYNYEptTppWUVL+3e6dxO6fVy58xFycEZEduPHdyseVT+XZlIy1yTuHX724dpn31VLbIYaij+GYdfTVRVnv37fTF5der+/VtoD74/dbNTYjHJk7yTDuxNpTwsPXdVrCGzfNeEBurUOuJxQPZJOvzzbb49NcVFPDktKDE/98gb5M++qOq3m4BwWljuvgB11+2fvhnU0bz9aE/k5nb1A00NQ6lpicH0znaVhQLuEZkYgvdd4Q5bnghP3fKiIIVOgAAQcDUCU+r0js5O6dCQt5eX44glUmknj+eYM2N6ZHgYlfFks2csOUMBEntzfhyr7+qXF+9Z1CWfJyK9fzzzxXUNp5oVJjQNXxfjo23/po43pMGwtpob3Sn7/KnKUa1Vb5M9AtiYrL7+IdfyBOB1NDt0RwvLzg5WN3x1voKP6mL8Hpnnh2+l5oTVn+lQ24sxmZ3f/KdCqDNnCLqJbIPk0cPB7KyEMGZ7ixJlkjyj4lebei+2jVhU+jO0TPQARyAABIDA7AlMZ08vLr4yoaHLJRNzJhSYcNre/Kjqegn6osSES3M9xWkB0f6YhMuzKktUXS9tb5dTgqN9LaYWnOxGwQw6vUWVYphBrzNiZIp9eHpRQ5OMnXX06KtZ61ezyLhj9xTvqBCarrdZaFbo5o9ukDdoonJCVzk+8UY7WgcsCt1ahvjXIG1+KKKEJYa5m9skeUbHc0zd99vllkfJM7VM9ABHIAAEgMCsCThqrYmVBiSSboEgNDjYeoHP75ZIpBMLTXsuEYut11EiKnbaojNedGPScUyjsM27zcVNWoUWc2PRLIpbP9TZrUyPTIz07G0ZwX1eSA4hD9YIRgnrikndXXziC0F6VmZa4bGcXeLHN4uv1XdbLeYkGouGUaMP/f4P44RQ0qmOql+nsptqxhUzou2XfS/uTAh3b2lSrlqXEKjvutCF/nAwf56t5XHdwAkQAAJAYBYEptPpqPqlyyW/fO9dHMeNRuPlK1dn0eC4Ij7+/pJBs1pHiXEXnuJEq0DrmR4sGo4Rihp3Y7lhSK9bp+banrIzt/yOvvbBRpMJw7WihktFNQMWW7qtM5Na1Fh+vvEGkxObun1n/lEf7JN/15qt7UatQoNp+Je/rbJa5m3lDQqJ3Zw+nbzGkdZ7gl2749eyuILoTQG6rnK+0vYoecaWp+sVrgEBIAAEJiEwg07XarWNj5o2b9qI/kXpSRqYNisqdmNAkHma/+z2dJNG1CLEdsaEe9ZIbMuP3lGRHoa+NsIiQmKFRKzqKz959uGQRq2yaXpn8YxKYdONHxgRvylY60ux6HS9tE2gSeGwdQMNY4uizhWnzDGNdtznm15KiAxkbPDXtJV1W1dLUflnbXnKLuECEAACQGBSAjPodFTnxs2qoCBOZdWtSevPmDknbU6i0ulUEkZhoH9wCp3JZCL5DBqlxjybHm68Xp/25rbDu0llj4RaZnBifqbXwO0LrTY7B073j+Qw6eLgtRFeepPRoB7p7+0b0lhnzDgrumBH+EgnXySRa0geaxK3+JtEZcTTQM2vuME/vv3oYUbVw26plsRgeQVy6LzyMi7xJ8H0wzQpePU8w2spae4+ypbSJ4RZHlV61pan7xeuAgEgAAQmEJhZpyOryzeniiZUW5hTtNv7+LvJLFvj0a/9Jtqc7D7/55Nc8/4TTU/Zl6eUO/PT929GW8RH+1rKTl6r6yPWLZFNpqffmBWXXxhnawAzPKn496mqfmQHN+kUCmpIyq4kd/OADaP9bTdPXau37B83FzYM3Tv1uSp3W0bmngQGjukVkt72+w2T28+Jxscdlby7XYaD0T6K+z/2jftr5plbHtcNnAABIAAEpieAu0bsOpwWsuu91yPavvu2omNIYzRhJLdV4flvHojvP/2/53jjtOz0POAqEAACQGAlE7Bv9lvJg0AviXpFRnnKWx50Sc0KHX2M2hGxSInhJNxx78rKHiRIDwSAABCYicDMtpeZWlgW1w1y4YA+dXNmPO92p0RtorJ8QtdnFHCULUVCmKQvizsEQgABILAoBFzE9oLcqjBDU3bkJ8cEeZpfQTKqpE86G6pvVrcPz2o/4qKwhk6AABAAAgtNwGV0+kKDgvaBABAAAiuAgIvY01cAaRARCAABILDwBECnLzxj6AEIAAEgsFgEQKcvFmnoBwgAASCw8ARApy88Y+gBCAABILBYBECnLxZp6AcIAAEgsPAEyCFh4QvfyzLoAcWf+3+/3Lc1Kzc7K82np44rc3TZuODykbxT3/r14XWDD5olhC+DOfeJszYe+92x+KH7D8U6jMROffe3b8f033kkXdSBzFlqqAAEgMCiEnhu5una7u/+9re/fvZ9o2JB+JK9XkiOYZOnbFs3KhULBxQGmxPeKcvBBSAABIDAsxBYdu+R7t57yHE8vPbW5ob7jjlPmzYZNAqZVDq6IO8gkb02ZGX7Xm3gDk8+azbKm3482fS0okM9IAAEgMAsCSz3eXp4VPTmpC2zHMySFcPdQ6J8LCH0FlcEFP0DPkAACAABBwILMk9///gxOp3u0IstqVKp/nniC+f86XPWhEWgr3OZy+dPj8/EaYFxBdszNgZ7Uk0qcWvtlZI7PGt0uvHlnM+QTk7K2JIQExLgScNNagmvobz4RvPYnJvMjsnelRu31pdBwgzq4f6OBxXF1T0o7hJG9k197dWsSF8mejgGHf6f9da2Bef+7z/N1sgY1KBdv3rL6j/YxDv3p2/bHbyrmwvjNP/NOXnpG0L9mGTMqJEJueXflzRao35gFO/1eYX58SGeZM1g2+0bXSiik6NLMoPRPWrrwbyUCC+qfph39+qlykVeJnAmCTlAAAgsLYEF0emlZRUv7d7pPLDS6+XOmfOVQ/ZJOvzzbb49NcVFPDktKDE/98gb5M++qJpV6CIUIykI76kvvSmWG9nRudu37H11+O8n71lVK8k76cDeVMrD0nNXxRoyy3dNaKBObXOubhh6WFLUTPHNPHIwTvTDZyW9FpdheqXZ37vlo+u78ulfq1gBqYcOpRF5Y0eKf8Yb7+RzZK3VZVXCUYzpvdrfOEA8h9yC8958JQlvqTh3qd/AjszY9WIwhvWOVcYokQXbsLryC3cU9OAtBVkHXjf860TlrMbr0AgkgQAQcCUCC6LTOzo7pUND3l5ejqQkUmknj+eYM2N6ZHgYlZldpCRaWHZ2sLrhq/MVfPNMmN8j8/zwrdScsPozHXb9OmWHJnnzhZPNxGWBbNXa91Kj/Kj3hi2TarJHABuT1dc/5FrilfI67CVRDYNaPqIm09VGc1jTkZERZzeQRq1SPjwkn2y/C3Ntbg5H8/jsyQttthCmjwghMIwRnh63avTeFz/V9Jrr8p/o/P67MGzsOkppOi79UNluHh+/V+Xzm0OJ6WtqvuM7izCuEpwAASDgwgQWyp5eXHxlArXLJRNzJhSYcNre/Kjqegn6osSES5OcUryjQmi63mYhYdrQDfIGTVRO6Kq5P7UMo4MKjERF8fOsH72ooUnGzjp69NWs9atZZEfrxySSzCGL6hsVRFF33LXHpHasS1kVGkDR97UTAfZMyiddEscCKC3p6ifGqxG2ijA6Z7XH1HtvJlSGUyAABFyQwNw13uwgDEgk3QJBaDCyFpg/fH63RCK1pmf5r0QstpZEiajYmSqRaCwaRo0+9Ps/jCuppFNno4JxOichNyc5eo2/hxtRXmBvyKTuLj7xhSA9KzOt8FjOLvHjm8XX6rsJC4m92NwTSGg6phpRTbpXBndjUjGtYixWtkmnnDADN2lV9vh6Jr1apcO8GLMa79xFhRpAAAisDAILpdPR6C9dLvnle+/iOI4iml6+cnWuPHz8/SWDZrWOEjPXRYYPDabhX/62ymIfISoYFJKZ9y6il3lePbJndc/1704+6JYo9ZhH/Fu/3U00YTma1KLG8vONN5ic2NTtO/OP+mCf/LtWMqkuHldv+hNkldFgqz1o6A8C56bMChujOuhoFHQbba1xVOs4lUZBjyDr5heyG42CaZU6tI4KHyAABJ5bAoR9YQEAaLXaxkfmPdnoX5Seaw9RsRuzXtyJvigxc129tE2gofmxdQP9QuHYVzxin8hO3QbFe20QRdlyq65zUKlHCpLqFeQ5eWmjUth044cbYjxgre+4p6HRYMTI1LmaZfSDHf0GxtqEEBTX2umjl3WL9dSgSD/bHkmcHhDuPaGUd6gvsYOS6hPuh6v7nshBp0+ABKdA4LkiME4zzfvIb9ysCgriVFbderqWZ7c6am1bza+4wT++/ehhRtXDbqmWxGB5BXLovPIy7qh5Hkui0unIQE5hoH/QhJfJZKKRGzRKDZogG+R9w9imqOT4tUaBhh6wLiUnxnEjJs6KLtgRPtLJF0nkGpLHmsQt/iZRGWHmtvRukAuEGkpMVuYLOu4IRqMbRbwnVtsM6ovhRsJIDDdk5ybTUL/oaNSq1OaHh0nRXnFL/HbOgSOU2/VckQqne/pxPETVFY9lSDOreDWN8iPJe/eMXL0v1HlGpL+4duLdYmzYnc/77jZP7hacsSueNXi7+smcn51Pd2ugFhAAAsuTwLKLczThPdJpqDntT8eoPrG52zLi1/qhea9eIeltv19aWt9nXkWkBG3/5bvWXeIOLXaf//NJrnnXCNV3867CrZs5TBxTD7TcvlxD2n0k8sbfbXvMaWsyX92VGOHvblaphtH+tvtl16o7xk+IcfeIrYU7UiPYZvPIwN1vvrwmMG9WIfmkH/sgz9ehT3NSWPLxiXsjVpMJTg9KzNuaFhvqbX6OaGWCxpILpa2W5xAS22fjiy/nx61hkXRDvNqK+4yCVwLKPvrykcKE/L0cO76p8VwdOzMvPtiDbN6ffuXijdYRmKZPgA2nQOD5IrDsdPrzhR9GCwSAABCYVwILaE+fVzmhMSAABIAAEJiZAOj0mRlBCSAABIDASiEAOn2l3CmQEwgAASAwMwHQ6TMzghJAAAgAgZVCAHT6SrlTICcQAAJAYGYCoNNnZgQlgAAQAAIrhQDo9JVyp0BOIAAEgMDMBECnz8wISgABIAAEVgoB0Okr5U6BnEAACACBmQlM9CAyc40VUuKFTfEtjQ+27vzZBHkrSn6akDM/pyTv1KPHchQ/fnSu1RbeYvbtPkvd2fcCJYEAEHgOCLjmPB0p9MDVwYt7+3SjUrFwQGGwunGZW9/T1SV7vZAcw4ZIF3MjCqWBwPNKwAXn6Uuh0JGvRXnTjyfNnoWf4jNdXbLXhqxs36sN3LGI10/RA1QBAkDgOSHgavP0pVHoC/djwd1DonwIH+kL1w20DASAgIsQcLV5OrKho++i3hxq0K5fvWX142vinfvTt+1EiFDkandV8jvvp3VdKMeT8hLCvdwwrbSr7tqlio5Rm0vcaeqSfVNfezUr0peJHrtBh/9nvXVMgnP/Z/MAvFBjNHvx/UVy+4VKakpeAgrnavbie/VSJVdmDsVEDsj94N2k/jOfnG1X2YxMOCvuyK8L6eUffV4rBUe/C3VXoF0gMFsCrqbTnRdFB0VCAZ+nIDMoFArLaPaWPs8fXd+VT/9axQpIPXQobZKmSV5pewvayn/88pLIwF5fsG/HvpcGPi5qlFtU4jR1DUMPS4qaKb6ZRw7GiX74rKTXEu1Cr1yAEThJTfLOKEytKz7zjx+UjND0wsIDrxv+daKyX48ZBhrrxOn5KRHuHY+tPt5xj8jEELyvhDsMCt2JI2QAgcUn4Gq2lwkE1Uplk0guzz1mzHtHm31UmnEU9w+dUObZT1FcUfnwkNwcBGOyj6798sXazkH56JDgbnm9lBy83t/NXm7quga1fGRkZFRtRHGRFChl+ViC69krL1xitKm4olkoU8j6m69ffjDqk5i+xiKzcehxnQAPS472tP5ySJ5R8auNgvo2CMaxcDcDWgYCcyDgyjrdoNMOiPpxr0BsuN+GhErH/cPngGdeig52CInJtVEjV2MUOm2ukUvnRY65NDIskBKPKN0gb8BE56z2sOy9Mcnb6jr0QSmxbPNPh+QZHc8x8u+12wIzzaULKAsEgMACEHBZna4YkdU0PO6i+GLubDM3Qq1vCJEdzBFsiZYuAMwpmtSqtPYNjpYEPklI6SnqLlG2Sa8zm8+tH6NWo8fcGFSr1CYl/w5X5Z+4yY+M1gvWJQTqOu7y5rwln2gbjkAACMwvAVezp9vp9PC7jFmHcapjtGjzxQ1hI/u8BWIZrbbV214YEhMI4DSmG45prE8gCoNBxbRKHWEw1wjqH41s3JQQWFMXsjlA017aTayXTmgFToEAEFh0Ai47T1erVJiTQveniJKZ1Qiy/6qxzSmLznxOHRoNRoxMXRBbDc4Iydjz8u7kQJqzRD6RQcTTkMZZF4ip+56MBdXWix7ek7DWJ6zbsMlPyb0vWCksnYcJOUDA5Qi47DzdfqdSWNW/4/zRfjrvCZxCZ7iRMBLDDdmbyTQmk4mORq1KrbcbXKbsc+a6BrlAqKHEZGW+oOOOYDS6UcR7oiAmzFO2O7sL9NCs/LhQXEduabjQZdlVM1bPbe2eV3Jod3hy2prUHbG0wVvVTxxKGKSN9cLsvOw0t9HGS0KHC2MNQAoIAIElIeCyOp3OYMgVQ5i7Vzit05kssr04Zz5VDsk75c0P8nxtdX1+9uFvzUlhyccn7o3MpNRnU1fDu/Z9FWNH6mtHMjFMO3D3my/nTadrJbw+XahvL29IP3Ho+o4r18Sxefsz2Ob96XeKLt4SjStjlHHrurcVRsju3BcRa6kT24BzIAAEloAAnpmzdQm6XbAu7fvT0S7Gu82thoC1B2Kq9sdU2Tt83OPZ1L2qluvNE7nbMyExRsD8ztEvCxTjX54au0ykaBF7PzzIqT3x6c2BsdVU4iIcgQAQWCoCrjtPZzIzk+IFvC7TAB+LseFFehwp9KLKYDtu5BLx+Pt5AVNsRDEKWySBL/hNdVVw8S9fP1r8XXzLQGacFZUS7SYsfSQBhW7/LUECCCwHAq6m051d6RqGvLduElsXRd3pejRDd+RulDUU/bPDtk3P8YIlbTLqjXjVVAuUJp18SfbwLaHMOM0nyJ9JWxWRtTNC03C6cWieTPtO5CEDCACBpyPgajrdmQKam7/3UaJzvi3HoBqWqKa8ujwvLJ3MZK9NhUfS/Eg6Cff6qVIe8SrV8sQEUgGB55GAq9nTn8d7CGMGAkAACBAEXHZ/OjFAOAIBIAAEniMCoNOfo5sNQwUCQMDlCYBOd/lbDAMEAkDgOSIAOv05utkwVCAABFyeAOh0l7/FMEAgAASeIwIuu5cRBSZFQezsr5Xab6nzBnb7pcVOmCPb/WqX+sKf/tM675sCaZEHf3eQde3jL2sh/tBi31foDwgsJQHXnKe7WqTppfyFQN9AAAisJAIuqNNBoa+kHyDICgSAwLwScDWdDgp9Xn8e0BgQAAIrjICr2dORDR19534TcFpgXMH2jI3BnlSTStxae6XkDm/MTzmZHZO9KzdurS+DhBnUw/0dDyqKq3tmGd0Hp/lvzslL3xDqhzyrGzUyIbf8+5JGwsxtMtHDMvfmp63zpWFaaVfdtUsVHaOEF5XppcKmb9kBAtlr88vHXgrru/LV2buDM/jGNftl/EVy+4VKakpeQugqs6/du1cvVXJlZm9d5IDcD95N6j/zydl2YvQ4K+7Irwvp5R99Xisl5HboGpJAAAgsKgFX0+nOi6KDIqGAz1OQGRQKhWWcfDGS7JN0+OfbfHtqiotQFIigxPzcI2+QP/uiqt/iNJzknXRgbyrlYem5q2INmeW7JjRQp9bN5Bzddhsp/hlvvJPPkbVWl1UJRzGm92p/48DY0wLDwwoK6Y9vXDwtNrBfyNmeue+lgY+LGuXm1qeXCpupZeJ3RPKM3fP2S2HCq1/PrNBtdUjeGYWpdcVn/vGDkhGaXlh44HXDv05UIhqGgcY6cXp+SoR7x2OrQ0rcIzIxBO8r4RIPKaJbOAIBILAUBFxNp09giLyoN4nkpNxjKI4dCscj1anxW6dN4u7xxWhh2dnB6oavzlfwzWHY+D0yzw/fSs0Jqz/TYX4GkD0C2Jisvv4h1xIYgtfRPL76dGfMtbk5HM3jsycvtNl8OD6aUNzYd+VMSYNFiQvkXuuOJa33d2uUIzlmkGrmljGzV0nWuu0/fzVSfO0/Z+oHZpihOwo22lRc0SxEFWTN1y+HxL6VmL6m5ju+FjMOPa4TvLg7Odqz5Z4MTctJnlHxq42Cn9pGYI7uyA/SQGCpCLiaPd2Ro0GnHRD1416B2HC/LZ9Kx/3DHcuY0xTvqBCarrdZSMTV1A3yBk1UDjI8WIrqRQ1NMnbW0aOvZq1fzZrK8+7EVi3nVN+oIIq64y5/aqe84hY+4YLdoJQqMAqdZuliBqlm0TKmN3Fy3ty3frj0P0V14jkodCT6sEBKVEA0Bkx0zmoPFJMPw0zytroOfVBKLNv80yF5RsdzjPx77cQQzEXgAwSAwNIRcNl5umJE9qCtC8U5wtzZZrxIrbMD0XFDiCzWR8Drd69tJRypk2gsGkaNPvT7P4y7D0q6za26Sd1dfOILQXpWZlrhsZxd4sc3i6/VdzvYT8ZVG3eCmqZjqhHVNJEjtAqN3YxjSeDWEBwzSDWLlrGgba+toaPW3KlzfXSb9LoxkY1ajR7zYRA0lPw7XNWbiZv86m4MeK5LCNR1nOVN/cgahwNOgAAQWGgCLqvTe/hdxqzDOJU+geCGsJF93gIUj3RMpxuRWsU0/MvfVo0LumlQSOwxOE1qUWP5+cYbTE5s6vad+Ud9sE/+XTuLGD9GrVKDrfagIZ06piPHS2RX6OOzUZjqaaWaRcuYuuOnb24zd7xTsO8l4ecXWuYwl8ZpTDccsz5scAqDQcW0Sh1hXdEI6h+NbNyUEFhTF7I5QNNe2k2sl04YApwCASCw6ATmOoFbdAGftkO1SoVs6BNq+1NEycxqlGkNe2S7qpe2CTQ0P7ZuoF8oHPuKR5zWQY1KYdONH26I8YC1vrN6GuoHO/oNjLUJIQzr5HuCPNOdziDVbFoe7e2V9td/f67RuP6V19L8JkqMM0Iy9ry8OzlwknjbPpFBBDwaZ10gpu57Iid0OqYXPbwnYa1PWLdhk5+Se19A2KymGw5cAwJAYFEITPx/viidLmonKazq33H+OG2Xan7FDf7x7UcPM6oedku1JAbLK5BD55WXcc1TW5wVXbAjfKSTL5LINSSPNYlb/E2istktOJoU7RW3xG/nHDhCuV3PFalwuqcfx0NUXfHYvMA4/Wd6qWbdMipYcqbC7+1tB1/s//xql8OUmh6alR8XiuvILQ0XutAKsuPHbe2eV3Jod9AuoDWpO2Jpg7eqnziUMEgb64XZedlpbqONl4QOFxybgDQQAAJLQMBldTqdwZArhjB3r3BapzNXZHtxzDQM3Tv1uSp3W0bmngQ0o9YrJL3t9xts03STTqGghqTsSnI3wzKM9rfdPHWtfrZ7sXX9lV+fHM3bmpa8c7155quVCRpLDFMZXByFwqaVCsNm3bJJJ7p17qfA44UHXu7/59mHQ4QVSCvh9elCfXt5Q3YbE9G/vuPKNXFs3v4Mtnl/+p2ii7fGmaUwo4xb172tMEJ2576IWEsl6sIRCACBJSTgarHr7PvT0S7Gu82taI30QEzV/pgqO+LHPZ5N3atQpGkUp9SeCYkxAuZ3jn5ZoDj3p2/bp7Op0CL2fniQU3vi05sDxDNirA1IAQEgsFQEXHeezmRmJsULeF2mAT4WY8OL9DhS6EWVwfOCm+Sdevz9vIApLOVGwcW/fP1oDuuS8yLTIjWCs6JSot2EpY9msU68SCJBN0AACJgJuJpOd3alaxjy3rpJbF0Udafr0Qx9vu68UdZQ9M8O2xY/p0ZNOrnr7fDDaT5B/kzaqoisnRGahtONQzOuCjhxgQwgAAQWkoCr6XRnVmhu/t5Hic7585BjUA1LVPPQzsppguy1qfBImh9JJ+FeP1XKm9zTwsoZDkgKBFyPgKvZ013vDsGIgAAQAAKzJ+Cy+9NnjwBKAgEgAARchgDodJe5lTAQIAAEgAAGOh1+BEAACAAB1yEAOt117iWMBAgAASAAOh1+A0AACAAB1yHgsnsZUWBSFMTO/lqp/Y45b2C3X1qZCTL7hbyXX4wLXUXFME1/zekvy/rG3tZHr0UdPZaj+PGjc62ut1l+Zd4vkBoILCwB19Tp1kjTTxWYdGFxz3vrOOuFn72S7N9ZfuanJ2oqiy6XjvfdohuViiiLOFYAACAASURBVIUjitk5mJl36aBBIAAEFpuAC+p0q0JfbJBL1B/VJ4JDGrlfeZdrjZ06QQyjvOnHk00TMuEUCAAB1yXgavb050qho58lCvpBxXQqJ0/vrvuLhZEBASAwHQEXf4901vZ0nBYYV7A9Y2OwJ9WkErfWXim5wxuLTkdmx2Tvyo1b68sgYQb1cH/Hg4ri6h4HV+TTIqb5b87JS98Q6sckY0aNTMgt/76kcdjqKYXsGZm+My9xnT+TZJD3NlVfKb3/RG3xxEtalfzO+2ldF8rxpLyEcC83TCvtqrt2qaJj1FyT5Ln5tTd2RLLpliChRPfDVZ/9q1xs8ZNIDdr1q7eSWeYrJp6zk0WKV2zuS3nx4WxkhSc+kspPPrs9OL2XRbPXxl8kt1+opKbkJaCArcgT792rlyq5MnM1ckDuB+8m9Z/55Gw7wQZnxR35dSG9/KPPa2frnZgQB45AAAg8BQFXs704K/FBkVDA5ynIDAqFwjJO7qGE7JN0+OfbfHtqiotQFIigxPzcI2+QP/uiymrPIHknHdibSnlYeu6qWENm+a4JDdSpZzszpvhnvPFOPkfWWl1WJRzFmN6r/Y0DtqcFzojYfuzgZs2j8u/KRFrmmsSt298+TPvsq2rCWTnJK21vQVv5j19eEhnY6wv27dj30sDHRY1yE2YcbSn+D4+M08L2/OJn7JpvTtdJkVY1aEYJlazru/LpX6tYAamHDqU5/S6QUIdfTVRVnv37fTF5der+/VtoD74/dbNzdl4WSd4Zhal1xWf+8YOSEZpeWHjgdcO/TlQiVoaBxjpxen5KhHvHY6tDStwjMjEE7yvh2h5hTpJABhAAAvNLwNV0+gQ6yIt6k0hOyj2G4tihcDxSnRq/ddok7h5fjBaWnR2sbvjqfAXf7DKc3yPz/PCt1Jyw+jMd5mcA2SOAjcnq6x9yLbqW19E8vvp0Z8y1uTkczeOzJy+02TaePLIXJ7E358ex+q5+efGeReXxeSLS+8czX1zXcKpZYYuaoWu/fLG20+woTH63vD4lKm29v1ujHEmJwpXK0YhoCr0J/ekgHxkZIbQ50T6KWCofHpKPbYIhLmBk9roYH237N3W8IdRSW82N7pR9/lTlqHZWoTpQM6NNxRXNQtSyrPn65ZDYtxLT19R8x9dixqHHdYIXdydHe7bcMwdyInlGxa82Cn5qGwH/jXb6kAACC0rA1ezpjrAMOu2AqB/3CsSG+235VDruH+5YxpymeEeF0HS9zUKzQjd/dIO8QROVg0wLllO9qKFJxs46evTVrPWrWeQp/KVbik78h+obFURRd9zlT7KTEKcFRPtjEi7PrvD00vZ2OSU42nfMIDLYIST+tDBq5GqMQqfNSYCJAlnOcbIbBTPo9DZFa9Cj8NFkyhx+CsMCKfGoQKwGTHTOag+LEcgkb6vr0AelxLLNrZE8o+M5Rv69dhf1Ij8pXMgEAktLwGXn6YoR2YO2LhTnCHNnmxEjtc4ORMcNIbJYHwGv3722lXCkTqKxaBg1+tDv/zDuXijpNtfoJnV38YkvBOlZmWmFx3J2iR/fLL5W3z1mbR9Xa/wJapqOqUZUE+fQllJuTDqOaRQOs2OTVqHF3Fi0MfWqVY1dtsyi8bk8UsYLYz/TD3V2K9MjEyM9e1tGcJ8XkkPIgzWC2Stek143NiCjVqPHfBgEKyX/Dlf1ZuImv7obA57rEgJ1HWd5kzzQ7LJAAggAgXkl4LI6vYffZcw6jLaFTMC1IWxkn7cAxSMd0+nIjKHBNPzL31YRdmxLHYNCYt/rbVKLGsvPN95gcmJTt+/MP+qDffLv2llYn5H9Q4Ot9jAr6TEtSEikVaCVRA8WDccIdYq7sdBaqEK70JYKbU/ZmVt+R1/7YKPJhOFaUcOlopo5hKDDaUw39DSyPmMoDAYV0yrRVN/60QjqH41s3JQQWFMXsjlA017aTayXEuOGIxAAAgtHwGV1ulqlQjb0CeD8KaJkZjXKtIY9sl3VS9sEmhQOWzfQMOkm77FGjEph040fGBG/KVjrS5mNTtcPdvQbNq1NCGEIOieqNpNG1CLEdsaEe9ZIrEuIZO+oSA9DX9sAYdgY63meUyRWSMSqvvKTKOK0Rq2a9BmCM0LS8xPYojvX6/sJoxQhhU9kEP1hqyUcCI2zLhBTtz6REzod04se3pOkpCSsUwb5KblXBRMrE43AEQgAgQUg4LI63c4qhVX9O84f7aeTJdT8ihv849uPHmZUPeyWakkMllcgh84rL+OaJ9A4K7pgR/hIJ18kkWtIHmsSt/ibRGWz07smRXvFLfHbOQeOUG7Xc0UqnO7px/EQVVc8RkuIxuHG6/Vpb247vJtU9kioZQYn5md6Ddy+0EoskE4m6yzzcAqd4UbCSAw3ZOcm05hMtI8Srauq1GhJFQ2J7h/JYdLFwWsjvPQmo0E90t/bN2SdeBMd0EOz8uNCcR25peFCF1qNdfy4rd3zSg7tDtojtCZ1Ryxt8Fb1E4cSBmljvTA7LzvNbbTxktDhgmMTkAYCQGBBCLisTqczGHLFEObuFU7rdCaHbC+OmYahe6c+V+Vuy8jck8DAMb1C0tt+v8G2XdGkUyioISm7ktzNsAyj/W03T12rn+1ua11/5dcnR/O2piXvXG/+s0ErEzSWEK/qa3rKvjyl3Jmfvn8zEzeM9rWUnbxW5+CuxVHGOaVJ3ilvfpDna6vj87MPf2tOCks+PnFvxPyYwkZ7+o1ZcfmFcUSzhicV/z5V1T+2RVMr4fXpQn17eUN2CxRRVt9x5Zo4Nm9/Btu8P/1O0cVb44xWmFHGreveVhghu3NftOB/chBCwREIAAEzAVd758i+Px3tYrzb3IrWSA/EVO2PqbLf7cc9nk3dq1CkaRSn1J75XCVwWsiu916PaPvu24qOIY3RhJHcVoXnv3kgvv/0/57jzTCtNr9z9MsChfNLTOMR0iL2fniQU3vi05tzMNOPbwLOgAAQeBoCrjtPZzIzk+IFvC7TAB+LsaFBehwp9KLK4KdB5VQHOT08/n5ewBQbUYyCi3/5+hGx+ulUeekyyF6RUZ7ypgddUo3VBm7UjohFSgwnzceeGvO4cFZUSrSbsPTRLFaRl44D9AwEXJKAq+l0Z1e6hiHvrZvE1kVRd7oezdDn60YaZQ1F/+ywbeJzatSkky/PPXwGuXBAn7o5M553u1OiNlFZPqHrMwo4ypaiZ7V94zSfIH8mbVVE1s4ITcPpxiH7uqkTHcgAAkBgYQi4mk53poTm5u99lOicPw85BtWwxLL5Yx7aWrwmTAru96fLduRvOXBsm/nlJqNK+qTz1pkfqzsm7syZq0xkr02FR9L8SDoJ9/qpUh7xstRcm4HyQAAIPD0BV7OnPz0JqAkEgAAQWPkExt5YXPljgREAASAABJ53AqDTn/dfAIwfCAABVyIAOt2V7iaMBQgAgeedAOj05/0XAOMHAkDAlQiATneluwljAQJA4Hkn4LJ7GVFg0pbGB/bXSu332XkDu/3SgiTcwvb91+uxbua2NY+//fP33TO8qLkgQkCjQAAIPC8EXHOevowiTWu7v/vb3/762feNiuflJwXjBAJAYAkJuKBOX0YK3XxjTQaNQiaVjjp5wlrCuw5dAwEg4KoEXE2nLzOF7qo/GxgXEAACy5SAq9nTkQ0dfecOG6cFxhVsz9gY7Ek1qcSttVdK7vDGotOR2THZu3Lj1voySCig83B/x4OK4uqeZ32V3iwl2TMyfWde4jp/Jskg722qvlJ6/4naEkDIfJXiFZv7Ul58OHssQCkmqfzks9uDzlGTzOWJj9l74i+S2y9UUlPyElBYVeQR9+7VS5VcmbkaOSD3g3eT+s98cradGAHOijvy60J6+Uef187WhzDRFRyBABBYVgRcTac7L4oOioQCPk9BZlAoFJZxch8kZJ+kwz/f5ttTU1yE4jwEJebnHnmD/NkXVdawRyTvpAN7UykPS89dFWvILN81oYE69Zij8ae/nzgjYvuxg5s1j8q/KxNpmWsSt25/+zDts6+qre7IKf4Zh19NVFWe/ft9MXl16v79W2gPvj91s3N23g5J3hmFqXXFZ/7xg5IRml5YeOB1w79OVKIRGQYa68Tp+SkR7h2PrW4jcY/IxBC8r4RrDbf09AOCmkAACCw1AVfT6RN4Ii/qTSI5KfcYimOHNpxIdWr81mmTuHt8MVpYdnawuuGr8xV8c6A1fo/M88O3UnPC6s90mJ8BZI8ANiarr3/ItehaXkfz+OpPe0Zib86PY/Vd/fLiPYsy5fNEpPePZ764ruFUMwp1RGavi/HRtn9TxxtCUrXV3OhO2edPVY6OBZ2eoePRpuKKZiEKSiFrvn45JPatxPQ1Nd/xtZhx6HGd4MXdydGeLfdQuCWM5BkVv9oo+KltBPwozoAULgOBZU/A1ezpjsANOu2AqB/3CsSG+235VDruH+5YxpymeEeF0HS9zUIicqZukDdoonKQ0cJSVC9qaJKxs44efTVr/WoWeQp/6RNbnfEcpwVE+2MSLs+uSvXS9nY5JTja12JqwcluFMyg09sUrUGPwjiTKXO4YcMCKRFlCI1owETnrPZAEezQsq28ra5DH5QSyza3RvKMjucY+ffal6Gv9xkhQgEgAATGE3DZebpiRPagrQvFOcLc2eYhI7XODkTHDSGyWB8Br9+9tpVwpE6isWgYNfrQ7/8wjo2SbnONblJ3F5/4QpCelZlWeCxnl/jxzeJr9d1j1vZxteZw4sak45hG4TDvNmkVWsyNRbMobv1QZ7cyPTIx0rO3ZQT3eSE5hDxYI5i94jXpdWNWd6NWo8d8GMSIlPw7XNWbiZv86m4MeK5LCNR1nOUtT2/vc+AJRYEAEEBzVFeF0MPvMmYdxqnmGKCOnw1hI/u8BSge6ZhON2oVGkzDv/xt1biwmgaFxL7/0KQWNZafb7zB5MSmbt+Zf9QH++TftbOzazt2Pj6tVaA1Sg8WDUUHta2K4m4sNwzpdevUXNtTduaW39HXPthoMmG4VtRwqahmDqHgcBrTDT0zLE3jFAaDimmVaKpv/WgE9Y9GNm5KCKypC9kcoGkv7SbWS8fLCGdAAAisLAIuq9PVKhWyoU+4Gf4UUTKzGmVawx7ZruqlbQJNCoetG2iwLopOqDV2alQKm278wIj4TcFaX8qz6nSTRtQixHbGhHvWSKyLk2TvqEgPQ1/bgM1kQmKFRKzqKz959uGQRq2yafoxacwpnBGSnp/AFt25Xt9PmI6IEj6RQfSHrZagHTTOukBM3fpETuh0TC96eE+SkpKwThnkp+ReFUysTDQCRyAABFYUAZfV6fa7kMKq/h3nj/bTyRJqfsUN/vHtRw8zqh52S7UkBssrkEPnlZdxzRNonBVdsCN8pJMvksg1JI81iVv8TaIyQu9O1p5DHolKp1NJGIWB/sEpdCaTiYgbNEoNMosYhxuv16e9ue3wblLZI6GWGZyYn+k1cPtCK1ogNX9wun8kh0kXB6+N8NKbjAb1SH9v35B14k10QQ/Nyo8LxXXkloYLXRPcDrit3fNKDu0O2smzJnVHLG3wVvUThxIGaWO9MDsvO81ttPHSs0atI8SBIxAAAktMwGV1Op3BkCuGMHevcFqnM2Nke3HMNAzdO/W5KndbRuaeBAaO6RWS3vb7DbbtiiadQkENSdmV5G6GZRjtb7t56lr97PZxUwLzjr+bzLL1Ff3ab6LNye7zfz7JNe+o0fSUfXlKuTM/ff9mJm4Y7WspO3mtro9Y2EQ2mZ5+Y1ZcfmGcrQHM8KTi36eq+sc2UmolvD5dqG8vb8huJyLK6juuXBPH5u3PYJv3p98punhrnGkJM8q4dd3bCiNkd+6LiC6JunAEAkBghRJwtdh19v3paBfj3eZWtEZ6IKZqf0yV/fY87vFs6l6FIk2jOKX2zGWYwGkhu957PaLtu28rOoY0RhNGclsVnv/mgfj+0/97jucw355MdvM7R78sUJz707ft09lUaBF7PzzIqT3x6c05mOkn6w/ygAAQWC4EXHeezmRmJsULeF2mAT4WY8ON9DhS6EWVwfOCn+Sdevz9vIAp9jYaBRf/8vUjYvVzzh2SvSKjPOVND7qkGqsN3KgdEYuUGE7Cp+hwrl3grKiUaDdh6aNnXeuda8dQHggAgYUj4Go63dmVrmHIe+smsXVR1J2uRzP0+aJplDUU/bPDtj3QqVGTTv4suwMNcuGAPnVzZjzvdqdEbaKyfELXZxRwlC1Fz2r7xmk+Qf5M2qqIrJ0RmobTjUP2dVOnMUAGEAACK42Aq+l0Z/5obv7eR4nO+fOQY1ANSyzbSuahrYlNmBTc70+X7cjfcuDYNvMrSEaV9EnnrTM/Vnc866ZDstemwiNpfiSdhHv9VClvcm8JE8WBcyAABFYGAVezp68M6iAlEAACQGBhCMzhVfOFEQBaBQJAAAgAgXkjADp93lBCQ0AACACBJScAOn3JbwEIAASAABCYNwKg0+cNJTQEBIAAEFhyAqDTl/wWgABAAAgAgXkj4LJ7GVFgUhTEzv5aqR2Y8wZ2+6UVncBZG9/5r5dMP/7ty0cK0yzfI13RAwbhgQAQmIyAa87TIdL0ZPca8oAAEHB9Ai6o00Ghu/7PFkYIBIDAFARcTaeDQh+70SiSBnyAABB4zgi4mj0d2dDRd+43EacFxhVsz9gY7Ek1qcSttVdK7vDGotOR2THZu3Lj1voySJhBPdzf8aCiuLpndi/pT1mXHJD7wbtJ/Wc+OdtOtISz4o78upBe/tHntRZfvlPWtQyQ4r0+rzA/PsSTrBlsu32jC/ltcXTvZTC6R209mJcS4UVFvnbvXr1UyZUhr+0zfcy2+F8kt1+opKbkJaCQrOPqzkLmmdqH60AACCwkAVfT6c6LooMioYDPU5AZFAqFZZzcuwnZJ+nwz7f59tQUF6EIEkGJ+blH3iB/9kWVNewRyTvpwN5UysPSc1fFGjLLd01ooE495sJ82tszTV3DQGOdOD0/JcK947HVfSPuEZkYgveVcK1hj6api/p0C85785UkvKXi3KV+AzsyY9eLyNtkr4MwlMiCbVhd+YU7CnrwloKsA68b/nWicoZATrbqJO+MwtS64jP/+EHJCE0vLLTXnVFmh/4hCQSAwBIQcDWdPgEh8qLeJJKTco+hOHbI57hUp8ZvnTaJu8cXo4VlZwerG746X8E3uxvn98g8P3wrNSes/kyH+RlA9ghgY7L6+odcS1AJXkfz+OrTnU1X1zj0uE7w4u7kaM+WezI0ySZ5RsWvNgp+ahuxekqcri7GCE+PWzV674ufanrNAS34T3R+/10YNk4UTcelHyrbzSPg96p8fnMoMX1NzXf8GVyv21oYbSquaBailmXN1y+HxL5F1J1J5nECwAkQAAKLTsDV7OmOAA067YCoH/cKxIb7bflUOu4f7ljGnKZ4R4XQdL3NQiJ+hG6QN2iicpDhwVJUL2pokrGzjh59NWv9ahbZ0b4xsSmn82nrmuRtdR36oJRYtvk2kDyj4zlG/r12wuf6dHUpq0IDKPq+diKEnkn5pEsyoXdJlz1EqUbYKsLonNUe5AllpjodFkiJ2EeIxoDJXncGmadqD/KBABBYHAIuO09XjMgetHWhOEeYO9uMEql1diA6bgiRxfoIeP3uta2EI3USjUXDqNGHfv+HccyVdJtrdJO6u/jEF4L0rMy0wmM5u8SPbxZfq+8es7aPqzXhZPq6JiX/Dlf1ZuImv7obA57rEgJ1HWd5dq/r09XF3ZhUTKsYiztt0iknzMBNWpXdQGTSq1U6zIsxlbP3CVJjJr1uzPRu1Gr0mA9Rd3qZJzYE50AACCwuAZfV6T38LmPWYZxKn8BzQ9jIPm8Bikc6ptONWoUG0/Avf1s1LmCnQSGxx/g0qUWN5ecbbzA5sanbd+Yf9cE++XftLOMDTVtXI6h/NLJxU0JgTV3I5gBNe2k3sV5qkXvKumaFjVEJPYvKogDWyM26o1rHqTQK+pvCuvmF7EajYFqlbpbxL3Aa0w3HrOGscQqDgZ4fY3VnkHkCcDgFAkBgMQm4rO1FrVIhG/oElP4UUTKzGmVawx7ZruqlbQINzY+tG+gXCse+4hH7NJdoxqgUNt344YYYD1jrO9en4RR19aKH9ySs9QnrNmzyU3LvCwj7D9Gl5ehcVy/rFuupQZF+5ngZ6IPTA8KJvzusORjmHepru4pRfcL9cHXfE7mjTscZIRl7Xt6dHDgu3ra1tk9kEAGPxlkXiI2rOyuZCSngCASAwGISmKtmWkzZ5qevFFb17zh/nLYtNb/iBv/49qOHGVUPu6VaEoPlFcih88rLuGbTNs6KLtgRPtLJF0nkGpLHmsQt/iZRGWHInrbh2dQ1SBvrhdl52Wluo42XHOPSTd+vilfTKD+SvHfPyNX7Qp1nRPqLayfeS8aG3fm8727z5G7BGbviWYO3q584zuMxemhWflworiO3NFzoGncF7apZu+eVHNodtAtoTeqOWNrgrXF1p5R5ehpwFQgAgQUnMFEPLHiHi9UBncGQK4Ywd69wWqdzn8j24phpGLp36nNV7raMzD0JDBzTKyS97fcbbNN0k06hoIak7EpyN8MyjPa33Tx1rd6yf9yxjUnTs6lrlHHrurcVRsju3BcR65Lmxmaoq+m+/tWP2Mv5Ww+sJ+mGeLVXLwwVvBIwJoVeeP1cHTvz0K8KPchoj3lt0cVb40xLyFAj4fXpQn17eUN2GxNRXd9x5Zo4Nm9/Btu8P/2OU92pZCbqwxEIAIElIuBqsevs+9PRLsa7za1ojfRATNX+mCo73sc9nk3dq1CkaRSn1J65xAlaxN4PD3JqT3x6c2BsZXKpZJql/69lJfNSsYJ+gcDyI+C683QmMzMpXsDrMg3wsRgbeKTHkUIvqgyelxtB8k49/n5ewBR7G42Ci3/5+hGxL3GaDnFWVEq0m7D00SzXXKdpatEurUSZFw0OdAQElpKAq+l0Z1e6hiHvrZvE1kVRd7oezdDni7dR1lD0z46ptgeadHL7rsRJe8RpPkH+TNqqiKydEZqG041DjuuXk9ZY+syVKPPSUwMJgMAiEnA1ne6MDs3N3/so0Tl/HnIMqmGJ6qnbIXttKjyS5kfSSbjXT5XyJvda8NStL0zFlSjzwpCAVoHAMiXgavb0ZYoZxAICQAAILAoBl92fvij0oBMgAASAwPIiADp9ed0PkAYIAAEg8CwEQKc/Cz2oCwSAABBYXgRApy+v+wHSAAEgAASehQDo9GehB3WBABAAAsuLwLLey4iCi6JAdPZXQ+3knDeh2y89UwK9RHT0WI7ix4/OtU6/tXySXp6l7iTNQRYQAAJA4GkILN95+lJEi9aNSsXCAYXhaYIzT1eX7PVCcgx7tvEonuY+Qh0gAASAgJnAMp2nL4VCxzCjvOnHk01P98OYri7Za0NWtu/VBu7w0rtzebrRQS0gAARWCIHlOE9fGoW+cDcMdw+J8iE8mS9cN9AyEAACQGBZztORDR19F/XmUIN2/eqtZJa5TxPv3J++bR8LTUFalfzO+2ldF8rxpLyEcC83TCvtqrt2qaJj1OafZZq6ZN/U117NivRlokdn0OH/WW8dk+Dc//2n+el9CswCjNm34i+S2y9UUlPyElBYVeQv9+7VS5VcmfnvBHJA7gfvJvWf+eRsOxFTCWfFHfl1Ib38o89rZ+dDeBYyQBEgAASWgsBytL04L4oOioQCPk9BZlAoFJZxATyj6PqufPrXKlZA6qFDaZPcBpJX2t6CtvIfv7wkMrDXF+zbse+lgY+LGuUWu/s0dQ1DD0uKmim+mUcOxol++Kyk1xJ5Qq9cgBE4SU3yzihMrSs+848flIzQ9MLCA68b/nWisl+PGQYa68Tp+SkR7h2PrW4jcY/IxBC8r4Q7vALciDkNFDKAABBwILAcbS8O4pmTyBN6k0guzz1mzHtHm31UmnEU9w+dUObZT41apXx4SO4YlMKxUV375Yu1nYPy0SHB3fJ6KTl4vb+b/frUdQ1q+cjIyKjaiKGgpyhl+Sj1T7MGa+9t1onRpuKKZqFMIetvvn75wahPYvoai8zGocd1AjwsOdrTevdJnlHxq42C+rYRUOmzhgsFgcAyJbDcdbpBpx0Q9eNegdhwvw0hlY77hy82zsEOITG5NmrkaoxCp5GncJy+2KJN2d+wQEo8onSDvAETnbPaw7L3xiRvq+vQB6XEss23n+QZHc8x8u+1z8LX+5R9wQUgAASWB4FlrdMVI7KahsddFF/MnW3GRaj1DSGygzmCLdHSxWOoVWntk2tLAl/uGh0z6XVj22yMWo0ec2PYnL2blPw7XJV/4iY/MkZatS4hUNdxlzfnLfmLRx96AgJAYLYElqM93S57D7/LmHUYpxIR7IkLG8JG9nkLUEzR2tZ5C3BBtO06R5zGdMMxjfUJRGEwqJhWqSOsKxpB/aORjZsSAmvqQjYHaNpLu4n1UtcBACMBAs8jgWU9T1erVJiTQveniJKZ1eheWUMXrYSbZjQYMTJ1QWw1OCMkY8/Lu5MDx8XMtkLxiQwinoY0zrpATN33RE7odEwvenhPwlqfsG7DJj8l975gbKPPSiAKMgIBIDAFgWU9T7fLnMKq/h3nj/bTeU/gFDrDjYSRGG7I3kymMZlMdDRqVepZrGbOXNcgFwg1lJiszBd03BGMRjeKeE8UduX6bIOhh2blx4XiOnJLw4Uuy66asfbc1u55JYd2hyenrUndEUsbvFX9xKGEQdpYL8zOy05zG228JHS4MNYApIAAEFhxBJa1TqczGHLFEObuFU7rdCaLbC/OmU+VQ/JOefODPF9bXZ+fffhbc1JY8vGJeyN2K/oULc+mroZ37fsqxo7U145kYph24O43X86bTtdKeH26UN9e3pB+ooD6jivXxLF5+zPY5v3pd4ou3hKNK2OUceu6txVGyO7cFxFrqRPbgHMgAARWWplcnAAAAWRJREFUGIHlGLvOvj8d7WK829xqCFh7IKZqf0yVHe3jHs+m7lUoWjSKNWrPhMQYAfM7R78sUIx/eWrsMpGiRez98CCn9sSnNwfGVlOJi3AEAkBgJRJY3vN0JjMzKV7A6zIN8LEYG16kx5FCL6oMtuNGLhGPv58XMMVGFKOwRRL4gt9UVwUX//L1o8XfxbcMZMZZUSnRbsLSRxJQ6PbfEiSAwEonsBx1urMrXcOQ99ZNYuuiqDtdj2bojtyNsoaif3bYtuk5XrCkTUa9Ea+aaoHSpJMvyR6+JZQZp/kE+TNpqyKydkZoGk43Ds2Tad+JPGQAASCw+ASWo053poDm5u99lOicb8sxqIYlC+o/Zcqen/7C0slM9tpUeCTNj6STcK+fKuURr1I9/VCgJhAAAsuHwHK0py8fOiAJEAACQGBlEVjW+9NXFkqQFggAASCw5AQoDWJYIVvyuwACAAEgAATmh8D/B8C/PKWeSIWFAAAAAElFTkSuQmCC" alt="" />

我要干嘛

我要把elasticdb下所有的文件打包成模块,然后让他可以通过pip install 安装,可以通过import 调用。

我现在该干嘛

首先,你需要一个打包的入口脚本:setup.py,这玩意儿是干嘛的呢,简而言之,就是告诉打包脚本,我是谁,我有谁,我可以干嘛,我是谁写的。

我的脚本如下:

# coding: utf-8

from distutils.core import setup
setup(name='elasticdb', #打包后的包文件名
version='1.0',
description='elasticsearch backpack', #说明
author='liu.xxxxx',
author_email='liu.xxxxxx@xxxxxxxxx',
url='YEYE',
py_modules=['elasticdb.es_check','elasticdb.es_config','elasticdb.es_log','elasticdb.es_sysdb'], #你要打包的文件
)

看到了没,最后那个py_modules,我把所有的文件加进去了,看到没,按着我那样写!

然后我该干嘛:

执行:python setup.py build
现在你可以看到目录结构发生了变化:

多了些东西,不用管,继续执行:

python setup.py sdist

你可以看见多出文件夹dist:

里面有个tar.gz文件夹,这个就是可以用pip安装了。

测试一下:

现在就可以用了。

Python 自定义模块的打包和发布的更多相关文章

  1. python 自定义模块的发布和安装

    [学习笔记] 自定义模块 使用的是pycharm 说白了就是.py文件都可以作为模块导入,像定义一个文件 名字为Mycode __all__ = ["add","sub& ...

  2. 万恶之源 - Python 自定义模块

    自定义模块 我们今天来学习一下自定义模块(也就是私人订制),我们要自定义模块,首先就要知道什么是模块啊 一个函数封装一个功能,比如现在有一个软件,不可能将所有程序都写入一个文件,所以咱们应该分文件,组 ...

  3. Python自定义模块

    自定义模块 自定义模块(也就是私人订制),我们要自定义模块,首先就要知道什么是模块 一个函数封装一个功能,比如现在有一个软件,不可能将所有程序都写入一个文件,所以咱们应该分文件,组织结构要好,代码不冗 ...

  4. 从入门到自闭之Python自定义模块

    自定义模块 定义:一个文件就是一个模块(能被调用的文件,模块就是一个工具箱,工具就是函数) 作用: 将代码文家化管理,提高可读性,避免重复代码 拿来就用(避免重复造轮子),python中类库比较多,提 ...

  5. 17.python自定义模块的导入方式

    1.直接用import导入 最后运行main.py可以看到命令行窗口输出了一句:你好,这样就完成了. 2.通过sys模块导入自定义模块的路径path 3.在环境变量中找到自定义模块 这个方法原理就是利 ...

  6. Python 自定义模块位置

    1.需要找出Python解释器从哪里查找模块: 具体方法: >>> import sys,pprint>>> pprint.pprint(sys.path)['', ...

  7. 自定义Vue组件打包、发布到npm以及使用

    本文将帮助:将自己写的Vue组件打包到npm进行代码托管,以及正常发布之后如何使用自己的组件. 本文讲述的仅仅是最基础的实现,其他复杂的操作需要非常熟悉webpack的相关知识,作者将继续学习. 先附 ...

  8. 8. Python自定义模块humansize

    我们在提取一个文件元信息的时候,经常会使用到获取元信息的size, 但是默认提取出来的是字节为单位计算的大小,我们需要转换成MB或者GB 或者TB的大小. 因此就需要使用到humansize这个模块, ...

  9. python自定义模块导入方法,文件夹,包的区别

    python模块导入,网上介绍的资料很多,方法也众说纷纭.根据自己的实践,感觉这个方法最简单直接,而且可以与主流的python ide生成的工程是一样的. 规则只有三条 1.      严格区分包和文 ...

随机推荐

  1. C++_友元函数(转)

    1.为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同 ...

  2. Oracle 修改表名

    .ALTER TABLE T_PLAT_KEYWORD_STATISTIC RENAME TO T_PLAT_KEYWORD; .create new_table as select * from o ...

  3. 早来的圣诞礼物!--android 逆向菜鸟速參手冊完蛋版

    我的说明: 让老皮特整理了这么长时间这个手冊,心里挺过意不去的,回头我去深圳带着他女儿去游乐场玩玩得了,辛苦了.peter! 太多的话语,也描写叙述不出这样的感觉了,得找个时间.不醉不归... 注:下 ...

  4. ORACLE截取字符串

     每行显示固定字符串,截取字符串 方法一:在循环里面输出 DECLARE   l_char          VARCHAR2 (3000 ) := 'ORACLEEB电子商务套件SSYSTEMg ...

  5. wcf 入门示例

    刚开始学习wcf,根据官方网站的说明写下的代码 第一步: 建立一个类库项目GettingStartedLib,首先添加wcf引用System.ServiceModel; 添加接口ICalculator ...

  6. java消息中间件之ActiveMQ初识

    目录 消息中间件简介 解耦合和异步 可靠性和高效性 JMS P2P Pub/Sub AMQP JMS和AMQP对比 常见消息中间件 ActiveMQ RabbitMQ Kafka 综合比较 标签(空格 ...

  7. 从头认识Spring-2.4 基于java的标准注解装配-@Inject-限定器@Named

    这一章节我们来讨论一下基于java的标准注解装配标签@Inject的限定器@Named. 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_s ...

  8. Gmail收不到邮件咋办?

    http://www.ipip.net/ping.php 分别输入 imap.gmail.com pop.gmail.com smtp.gmail.com 选择  国外 , 然后点ping,找到对应的 ...

  9. centos关机与重启命令详解

    Linux centos关机与重启命令详解与实战 Linux centos重启命令: 1.reboot   普通重启 2.shutdown -r now 立刻重启(root用户使用) 3.shutdo ...

  10. centos7.2 开发 部署 .net core

    1.centos7.2 安装 nginx官方文档:http://nginx.org/en/linux_packages.html#mainline 创建nginx.repo 文件 Pre-Built ...