{ "info": { "author": "psrit", "author_email": "xiaojx13@outlook.com", "bugtrack_url": null, "classifiers": [], "description": "# CyPkgDemo\n\nCyPkgDemo \u662f\u4e00\u4e2a\u4ee5 Cython - Python \u8054\u5408\u7f16\u8bd1\u3001\u5305\u88c5\u53d1\u5e03\u4e3a\u80cc\u666f\u7684 Demo \u5305\u3002\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n- \u53ef\u4ee5\u901a\u8fc7 `pip install CyPkgDemo` \u5c06 CyPkgDemo \u5b89\u88c5\u81f3 \"root\" package \u4e0b\uff08\u5efa\u8bae\u4f7f\u7528\u865a\u62df\u73af\u5883\uff09\uff0c\n\u5728\u6587\u4ef6\u4e2d\u4f7f\u7528\u5e38\u89c4\u65b9\u5f0f `import cypkgdemo` \u5f15\u7528\u5373\u53ef\u3002\n\n- \u53ef\u4ee5\u4e0b\u8f7d\u6e90\u6587\u4ef6\uff0c\u4f7f\u7528 `python setup.py install` \u5b89\u88c5\u3002\n\n## \u8bf4\u660e\n\n\u9879\u76ee\u4e2d\u7684 `setup.py` \u662f\u4e3b\u8981\u5185\u5bb9\uff0c\u5176\u4e2d\u5305\u542b\u4e86\u5982\u4f55\u4e3a\u6bcf\u4e00\u4e2a `.pyx` \u6587\u4ef6\u6784\u9020 Extension \u7684\u65b9\u6cd5\uff08\u901a\u7528\u53ef\u79fb\n\u690d\uff09\uff0c\u8fd8\u6709\u4e00\u4e9b\u5305\u547d\u540d\u65f6\u7684\u6ce8\u610f\u4e8b\u9879\u3002\n\n\u5982\u679c\u83b7\u53d6\u4e86\u6e90\u53d1\u884c\u5305\uff08source distribution\uff09\uff0c\u53ef\u4ee5\u8fd0\u884c `test.py` \u8fdb\u884c\u6d4b\u8bd5\u3002\u6ce8\u610f\uff0c\u5982\u679c\u8981\u4ece\u6e90\u53d1\u884c\u5305\u7684\u6839\n\u76ee\u5f55\u8fd0\u884c\uff0c\u5fc5\u987b\u5148\u6267\u884c `python setup.py build_ext --inplace` \u751f\u6210\u94fe\u63a5\u5e93\uff0c\u5426\u5219\u4f1a\u62a5\u51fa `ImportError`\n\uff08\u8fd9\u662f\u7531\u4e8e python \u5728\u89e3\u6790\u6a21\u5757\u5bfc\u5165\u4f4d\u7f6e\u7684\u65f6\u5019\uff0c\u4f1a\u9075\u5faa\u5982\u4e0b\u987a\u5e8f\uff1a\n\n1. built-ins\n\n2. `sys.path`\uff1a\n\n 1. \u811a\u672c\u6267\u884c\u7684\u4f4d\u7f6e\uff0c\u5373\u5f53\u524d\u8def\u5f84\uff1b\n\n 2. \u73af\u5883\u53d8\u91cf\u4e2d\u7684 `PYTHONPATH`\uff0c\u5373 .bash_profile\uff1b\n\n 3. \u5b89\u88c5 python \u65f6\u7684\u4f9d\u8d56\u4f4d\u7f6e\u3002\n\n\u6545\u6e90\u53d1\u884c\u5305\u76ee\u5f55\u4e0b\u7684 cypkgdemo \uff08\u6ca1\u6709\u751f\u6210\u94fe\u63a5\u5e93\u6587\u4ef6\uff09\u4f1a\u8986\u76d6\u53ef\u80fd\u5df2\u5b89\u88c5\u81f3 site-packages \u7684 cypkgdemo\uff0c\n\u4ece\u800c\u629b\u51fa `ImportError`\uff09\u3002\u53e6\u4e00\u79cd\u89e3\u51b3\u65b9\u6848\u662f\u5207\u6362\u81f3\u6e90\u53d1\u884c\u5305\u76ee\u5f55\u5916\u7684\u4f4d\u7f6e\u6267\u884c `setup.py`\u3002\n\n\n## \u5f00\u53d1\u7684\u4e00\u822c\u6b65\u9aa4\n\n\u4e00\u822c\u800c\u8a00\uff0c\u5bf9\u4e8e\u4e00\u4e2a\u5305\u542b\u4e86\u591a\u4e2a Python \u548c Cython \u6e90\u6587\u4ef6\u7684\u9879\u76ee\uff0c\u6bcf\u4e2a\u6a21\u5757\u5728\u5bfc\u5165\u540c\u4e00\u9879\u76ee\u4e0b\u7684\u5176\u4ed6\u6a21\u5757\u65f6\uff0c\u90fd\n\u5e94\u5f53\u91c7\u7528\u76f8\u5bf9\u4e8e\u6700\u9876\u5c42\u5305\u7684\u7edd\u5bf9\u8def\u5f84\uff08\u4f8b\u5982\uff0c\u5728\u8fd9\u91cc\u5c31\u662f `from cypkgdemo.atoi import / cimport ...`\uff09\u3002\n\n\u82e5\u53ea\u6709\u7eaf Python \u6587\u4ef6\uff0c\u6700\u9876\u5c42\u5305\u5728\u6e90\u6587\u4ef6\u5939\u4e2d\u7684\u540d\u5b57\u548c\u5b89\u88c5\u540e\u7684\u5305\u540d\u53ef\u4ee5\u4e0d\u76f8\u540c\uff0c\u4f8b\u5982\u5728\u6e90\u9879\u76ee\u4e2d\uff0c`cypkgdemo` \n\u6587\u4ef6\u5939\u53ef\u4ee5\u6539\u540d\u4e3a `src`, \u540c\u65f6\u987b\u5728 setup.py \u4e2d\u4e3a `setup()` \u6307\u5b9a `package_dir={cypkgdemo: src}`\u3002\n\u82e5\u8fd8\u5305\u542b Cython \u6587\u4ef6\uff0c\u5219\u4e8c\u8005\u540d\u5b57\u5e94\u5f53\u4e00\u81f4\u3002\n\n\u5728\u7f16\u5199\u5b8c\u6e90\u4ee3\u7801\u540e\uff0c\u5148\u8fd0\u884c `python setup.py build_ext --inplace`\uff0c\u8fd9\u6837\u4fbf\u53ef\u65b9\u4fbf\u5728\u9879\u76ee\u76ee\u5f55\u4e0b\u76f4\u63a5\u8fdb\u884c\n\u6d4b\u8bd5\uff0c\u6d4b\u8bd5\u65f6\u6309\u7167 `from cypkgdemo.atoi import ...` \u7684\u65b9\u5f0f\u5bfc\u5165\u6a21\u5757\u5373\u53ef\u3002\n\n\u5728\u8fdb\u884c\u5b89\u88c5\u6d4b\u8bd5\u65f6\uff0c\u8fd0\u884c `python setup.py install --record ./record.txt`\uff0c\u6216\u8005\u76f4\u63a5\u8fd0\u884c \n`pip install .`\uff0c\u6b64\u65f6\u4e0a\u4e00\u6b65\u6d4b\u8bd5\u524d `build_ext` \u5f97\u5230\u7684\u94fe\u63a5\u5e93\u6587\u4ef6\u4e0d\u4f1a\u88ab\u5305\u542b\u8fdb\u5b89\u88c5\u76ee\u5f55\u3002\n\n\u91c7\u7528\u4ee5\u4e0b\u6b65\u9aa4\u4e0a\u4f20\u81f3 PyPI\uff08\u540c\u6837\uff0c`build_ext --inplace` \u5f97\u5230\u7684\u94fe\u63a5\u5e93\u6587\u4ef6\u4e0d\u4f1a\u88ab\u5305\u542b\uff09:\n```python\npython setup.py sdist bdist_wheel\ntwine upload --repository-url https://test.pypi.org/legacy/ dist/* # Upload to Test PyPI\n# twine upload dist/* # To PyPI\n```\n\n\u6ce8\u610f\uff0c\u5982\u679c\u662f\u53d1\u5e03\u6e90\u6587\u4ef6\uff08`python setup.py sdist`\uff09\uff0c\u5f00\u53d1\u8005\u5e94\u5f53\u5b89\u88c5\u6709 Cython\uff0c\u4ee5\u4fbf\u4f7f\u751f\u6210\u7684 C \u6587\u4ef6\u5305\u542b\n\u8fdb\u6e90\u53d1\u884c\u5305\u4e2d\uff08\u8fd9\u6837\u7528\u6237\u53ef\u4ee5\u4e0d\u7528\u5b89\u88c5\u6709 Cython\uff09\u3002\n\n\u91c7\u7528\u4ee5\u4e0b\u65b9\u5f0f\u5b89\u88c5\u4e4b\u524d\u4e0a\u4f20\u7684\u5305\uff1a\n```python\npython3 -m pip install --index-url https://test.pypi.org/simple/ CyPkgDemo # From Test PyPI\n# pip install CyPkgDemo # From PyPI\n\n```\n\u6ce8\u610f\u7b2c\u4e00\u79cd\u65b9\u5f0f\u4f1a\u5c06\u5f53\u524d\u76ee\u5f55\u5bfc\u5165 `sys.path`\uff0c\u6240\u4ee5\u82e5\u662f\u5728\u9879\u76ee\u6839\u76ee\u5f55\uff08setup.py \u6240\u5728\u7684\u90a3\u4e00\u5c42\uff09\u8fd0\u884c\u5b89\u88c5\u4ee3\u7801\uff0c\n\u5219\u5e94\u5c06\u5176\u6539\u4e3a `pip install ...`\uff0c\u5426\u5219\u4f1a\u63d0\u793a \"Requirement already satisfied\"\u3002\u6216\u8005\u6362\u5230\u9879\u76ee\u5916\u8fd0\u884c\n\u5b89\u88c5\u4ee3\u7801\uff08\u539f\u7406\u540c\u4e0a\uff09\u3002\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "CyPkgDemo", "package_url": "https://pypi.org/project/CyPkgDemo/", "platform": "", "project_url": "https://pypi.org/project/CyPkgDemo/", "project_urls": null, "release_url": "https://pypi.org/project/CyPkgDemo/0.0.1rc6/", "requires_dist": [ "cython; extra == 'cython'" ], "requires_python": "", "summary": "A demo of organizing, building and distributing a Python-Cython mixed package.", "version": "0.0.1rc6" }, "last_serial": 4161274, "releases": { "0.0.1rc6": [ { "comment_text": "", "digests": { "md5": "4d0e37be32fdeee0320873366e27477b", "sha256": "81b7bcc4bb4ff8d921cd73004ac85dc5f66de5acbd4b1519b47466b4c631e5fd" }, "downloads": -1, "filename": "CyPkgDemo-0.0.1rc6-cp27-cp27m-macosx_10_13_intel.whl", "has_sig": false, "md5_digest": "4d0e37be32fdeee0320873366e27477b", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 33163, "upload_time": "2018-08-12T09:21:50", "url": "https://files.pythonhosted.org/packages/cf/df/395474fd7ef44d1000869d0e2af25dc84314ca1e6e698218b41fa7b8fac0/CyPkgDemo-0.0.1rc6-cp27-cp27m-macosx_10_13_intel.whl" }, { "comment_text": "", "digests": { "md5": "2cce4c91dd66b78266c41dead9224e31", "sha256": "7f4feb5969bab3e82e40d01a90b1f99bf625cf0cdf5f9ffe2a207aea640e4c1e" }, "downloads": -1, "filename": "CyPkgDemo-0.0.1rc6.tar.gz", "has_sig": false, "md5_digest": "2cce4c91dd66b78266c41dead9224e31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49829, "upload_time": "2018-08-12T09:21:58", "url": "https://files.pythonhosted.org/packages/7d/e9/ed9688706744e7b2be3b8a34ac29a50ebb4d2e79ffffb702b5c165b42dfd/CyPkgDemo-0.0.1rc6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4d0e37be32fdeee0320873366e27477b", "sha256": "81b7bcc4bb4ff8d921cd73004ac85dc5f66de5acbd4b1519b47466b4c631e5fd" }, "downloads": -1, "filename": "CyPkgDemo-0.0.1rc6-cp27-cp27m-macosx_10_13_intel.whl", "has_sig": false, "md5_digest": "4d0e37be32fdeee0320873366e27477b", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 33163, "upload_time": "2018-08-12T09:21:50", "url": "https://files.pythonhosted.org/packages/cf/df/395474fd7ef44d1000869d0e2af25dc84314ca1e6e698218b41fa7b8fac0/CyPkgDemo-0.0.1rc6-cp27-cp27m-macosx_10_13_intel.whl" }, { "comment_text": "", "digests": { "md5": "2cce4c91dd66b78266c41dead9224e31", "sha256": "7f4feb5969bab3e82e40d01a90b1f99bf625cf0cdf5f9ffe2a207aea640e4c1e" }, "downloads": -1, "filename": "CyPkgDemo-0.0.1rc6.tar.gz", "has_sig": false, "md5_digest": "2cce4c91dd66b78266c41dead9224e31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49829, "upload_time": "2018-08-12T09:21:58", "url": "https://files.pythonhosted.org/packages/7d/e9/ed9688706744e7b2be3b8a34ac29a50ebb4d2e79ffffb702b5c165b42dfd/CyPkgDemo-0.0.1rc6.tar.gz" } ] }