{"id":1085,"date":"2022-04-25T19:25:24","date_gmt":"2022-04-25T12:25:24","guid":{"rendered":"https:\/\/dt-corp.com.vn\/?p=1085"},"modified":"2022-04-25T19:25:24","modified_gmt":"2022-04-25T12:25:24","slug":"cach-dong-goi-code-python","status":"publish","type":"post","link":"https:\/\/dt-corp.com.vn\/?p=1085","title":{"rendered":"C\u00e1ch \u0111\u00f3ng g\u00f3i code Python"},"content":{"rendered":"<div class=\"entry-header\"><\/div>\n<div class=\"entry-content no-share\">\n<div class=\"content-inner \">\n<div id=\"ftwp-postcontent\">\n<p>Trong b\u00e0i n\u00e0y, m\u00ecnh s\u1ebd h\u01b0\u1edbng d\u1eabn c\u00e1c b\u1ea1n \u0111\u00f3ng g\u00f3i code\u00a0<a class=\"local-link\" href=\"https:\/\/anonyviet.com\/kien-thuc-python-co-ban-cho-nguoi-moi\/\">Python<\/a>. B\u1ea1n \u0111\u00e3 d\u00e0nh h\u00e0ng tu\u1ea7n \u0111\u1ec3 ho\u00e0n thi\u1ec7n code c\u1ee7a m\u00ecnh. B\u1ea1n \u0111\u00e3 th\u1eed nghi\u1ec7m n\u00f3 v\u00e0 g\u1eedi n\u00f3 cho tester \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o ch\u1ea5t l\u01b0\u1ee3ng. B\u1ea1n \u0111\u00e3 \u0111\u0103ng t\u1ea5t c\u1ea3 m\u00e3 ngu\u1ed3n l\u00ean m\u00e1y ch\u1ee7 Git c\u00e1 nh\u00e2n c\u1ee7a m\u00ecnh v\u00e0 b\u1ea1n \u0111\u00e3 nh\u1eadn \u0111\u01b0\u1ee3c c\u00e1c b\u00e1o c\u00e1o l\u1ed7i h\u1eefu \u00edch t\u1eeb m\u1ed9t s\u1ed1 ng\u01b0\u1eddi d\u00f9ng \u0111\u1ea7u ti\u00ean. V\u00e0 b\u00e2y gi\u1edd b\u1ea1n \u0111\u00e3 s\u1eb5n s\u00e0ng cung c\u1ea5p code Python c\u1ee7a m\u00ecnh cho th\u1ebf gi\u1edbi.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-40569 size-full\" title=\"C\u00e1ch \u0111\u00f3ng g\u00f3i code Python 6\" src=\"https:\/\/anonyviet.com\/wp-content\/uploads\/2022\/03\/python_programming_question.jpg\" sizes=\"auto, (max-width: 781px) 100vw, 781px\" srcset=\"https:\/\/anonyviet.com\/wp-content\/uploads\/2022\/03\/python_programming_question.jpg 781w, https:\/\/anonyviet.com\/wp-content\/uploads\/2022\/03\/python_programming_question-300x169.jpg 300w, https:\/\/anonyviet.com\/wp-content\/uploads\/2022\/03\/python_programming_question-768x432.jpg 768w, https:\/\/anonyviet.com\/wp-content\/uploads\/2022\/03\/python_programming_question-750x422.jpg 750w\" alt=\"C\u00e1ch \u0111\u00f3ng g\u00f3i code Python c\u1ee7a b\u1ea1n\" width=\"781\" height=\"439\" data-pin-no-hover=\"true\" \/><\/p>\n<div class=\"jnews_inline_related_post_wrapper left\">\n<div class=\"jnews_inline_related_post\">\n<div class=\"jeg_postblock_21 jeg_postblock jeg_module_hook jeg_pagination_nextprev jeg_col_2o3 jnews_module_40568_1_62662d2dbfff8   \" data-unique=\"jnews_module_40568_1_62662d2dbfff8\">\n<div class=\"jeg_block_heading jeg_block_heading_7 jeg_subcat_right\"><\/div>\n<div class=\"jeg_block_container\">\n<div class=\"jeg_posts jeg_load_more_flag\">\n<article class=\"jeg_post jeg_pl_sm format-standard\">\n<div class=\"jeg_postblock_content\">\n<div class=\"jeg_post_meta\">\n<div class=\"jeg_meta_date\"><\/div>\n<\/div>\n<\/div>\n<\/article>\n<\/div>\n<\/div>\n<div class=\"jeg_block_navigation\">\n<div class=\"jeg_block_nav \"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>V\u00e0 \u0111\u00f3 l\u00e0 khi b\u1ea1n nh\u1eadn ra. B\u1ea1n kh\u00f4ng bi\u1ebft l\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 cung c\u1ea5p s\u1ea3n ph\u1ea9m. Cung c\u1ea5p code \u0111\u1ebfn ng\u01b0\u1eddi c\u1ea7n l\u00e0 m\u1ed9t vi\u1ec7c l\u1edbn. \u0110\u00f3 l\u00e0 to\u00e0n b\u1ed9 m\u1ed9t nh\u00e1nh c\u1ee7a ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m, \u0111\u00f3 l\u00e0 ch\u1eef \u201cD\u201d trong CI\/CD, nh\u01b0ng nhi\u1ec1u ng\u01b0\u1eddi l\u1ea1i qu\u00ean m\u1ea5t. B\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng Autotools v\u00e0 Cmake, nh\u01b0ng m\u1ed9t s\u1ed1 ng\u00f4n ng\u1eef kh\u00e1c c\u00f3 c\u00e1c ph\u01b0\u01a1ng ph\u00e1p ri\u00eang \u0111\u1ec3 gi\u00fap b\u1ea1n cung c\u1ea5p code c\u1ee7a m\u00ecnh cho ng\u01b0\u1eddi d\u00f9ng. \u0110\u1ed1i v\u1edbi Python, m\u1ed9t c\u00e1ch ph\u1ed5 bi\u1ebfn \u0111\u1ec3 cung c\u1ea5p code cho ng\u01b0\u1eddi d\u00f9ng l\u00e0 s\u1eed d\u1ee5ng setuptools.<\/p>\n<h2 id=\"ftoc-cai-dat-setuptools\" class=\"ftwp-heading\">C\u00e0i \u0111\u1eb7t setuptools<\/h2>\n<p>C\u00e1ch d\u1ec5 nh\u1ea5t \u0111\u1ec3 c\u00e0i \u0111\u1eb7t v\u00e0 c\u1eadp nh\u1eadt\u00a0<a class=\"ext-link\" href=\"https:\/\/anonyviet.com\/tieptucdidentrangmoi\/?url=https%3A%2F%2Fpypi.org%2Fproject%2Fsetuptools%2F\" target=\"_blank\" rel=\"noopener external nofollow\">setuptools<\/a>\u00a0l\u00e0 s\u1eed d\u1ee5ng pip:<\/p>\n<div class=\"code-block code-block-1 ai-viewport-1 ai-viewport-2\">\n<div align=\"center\">\n<div id=\"passback_pc_article_mid1_728x90\/\/300x250\/\/336x280\" data-google-query-id=\"CJmM3r2Zr_cCFUWTlgodAG0AbQ\">\n<div id=\"google_ads_iframe_\/21622890900,22527870362\/VN_anonyviet.com_pc_article_mid1_728x90\/\/300x250\/\/336x280_0__container__\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><code><span class=\"kw2\"><span class=\"hljs-built_in\">sudo<\/span><\/span>\u00a0python\u00a0<span class=\"re5\">-m<\/span>\u00a0pip\u00a0<span class=\"kw2\">install<\/span>\u00a0<span class=\"re5\">--upgrade<\/span>\u00a0setuptools<\/code><\/p>\n<h2 id=\"ftoc-tao-thu-vien-vi-du\" class=\"ftwp-heading\">T\u1ea1o th\u01b0 vi\u1ec7n v\u00ed d\u1ee5<\/h2>\n<p>T\u1ea1o m\u1ed9t th\u01b0 vi\u1ec7n Python \u0111\u01a1n gi\u1ea3n c\u00f3 t\u00ean MyHellolib cho m\u1ed9t s\u1ed1 code v\u00ed d\u1ee5 c\u1ea7n \u0111\u00f3ng g\u00f3i. Th\u01b0 vi\u1ec7n n\u00e0y nh\u1eadn m\u1ed9t chu\u1ed7i v\u00e0 sau \u0111\u00f3 in chu\u1ed7i b\u1eb1ng ch\u1eef in hoa.<\/p>\n<p>\u0110\u00f3 l\u00e0 hai d\u00f2ng code, nh\u01b0ng c\u1ea5u tr\u00fac d\u1ef1 \u00e1n r\u1ea5t quan tr\u1ecdng, v\u00ec v\u1eady tr\u01b0\u1edbc ti\u00ean h\u00e3y t\u1ea1o c\u00e2y th\u01b0 m\u1ee5c:<\/p>\n<p><code><span class=\"kw2\">mkdir<\/span>\u00a0<span class=\"re5\">-p<\/span>\u00a0myhellolib.git<span class=\"sy0\">\/<\/span>myhellolib<\/code><\/p>\n<p>\u0110\u1ec3 x\u00e1c nh\u1eadn r\u1eb1ng d\u1ef1 \u00e1n n\u00e0y l\u00e0 m\u1ed9t th\u01b0 vi\u1ec7n c\u00f3 th\u1ec3 nh\u1eadp (m\u1ed9t \u201cmodule\u201d Python), h\u00e3y t\u1ea1o t\u1ec7p tr\u1ed1ng __init__.py trong th\u01b0 m\u1ee5c code, c\u00f9ng v\u1edbi t\u1ec7p ch\u1ee9a code:<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-text\">touch myhellolib.<\/span><span class=\"enlighter-m3\">git<\/span><span class=\"enlighter-text\">\/myhellolib\/__init__.<\/span><span class=\"enlighter-m3\">py<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">touch myhellolib.<\/span><span class=\"enlighter-m3\">git<\/span><span class=\"enlighter-text\">\/myhellolib\/myhellolib.<\/span><span class=\"enlighter-m3\">py<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Trong t\u1ec7p myhellolib.py, h\u00e3y nh\u1eadp code Python \u0111\u01a1n gi\u1ea3n sau:<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-text\">def <\/span><span class=\"enlighter-m0\">greeter<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">s<\/span><span class=\"enlighter-g1\">)<\/span><span class=\"enlighter-text\">:<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-m0\">print<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-text\">s.<\/span><span class=\"enlighter-m3\">upper<\/span><span class=\"enlighter-g1\">())<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>V\u1eady l\u00e0 xong ph\u1ea7n th\u01b0 vi\u1ec7n.<\/p>\n<p><span data-darkreader-inline-color=\"\">Ki\u1ec3m tra th\u01b0 vi\u1ec7n<\/span><\/p>\n<p>Tr\u01b0\u1edbc khi \u0111\u00f3ng g\u00f3i n\u00f3, h\u00e3y ki\u1ec3m tra th\u01b0 vi\u1ec7n c\u1ee7a b\u1ea1n. T\u1ea1o t\u1ec7p myhellolib.git\/test.py v\u00e0 nh\u1eadp coden\u00e0y:<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-text\">import myhellolib.<\/span><span class=\"enlighter-m3\">myhellolib<\/span><span class=\"enlighter-text\"> as hello<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">hello.<\/span><span class=\"enlighter-m3\">greeter<\/span><span class=\"enlighter-g1\">(<\/span><span class=\"enlighter-s0\">&#8220;Hello Opensource.com.&#8221;<\/span><span class=\"enlighter-g1\">)<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Ch\u1ea1y t\u1eadp l\u1ec7nh:<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-text\">$ cd myhellolib.<\/span><span class=\"enlighter-m3\">git<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-g0\">$<\/span><span class=\"enlighter-text\"> python .\/test.<\/span><span class=\"enlighter-m3\">py<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">HELLO OPENSOURCE.<\/span><span class=\"enlighter-m3\">COM<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>N\u00f3 ho\u1ea1t \u0111\u1ed9ng, v\u00ec v\u1eady b\u00e2y gi\u1edd b\u1ea1n c\u00f3 th\u1ec3 \u0111\u00f3ng g\u00f3i n\u00f3.<\/p>\n<div class=\"code-block code-block-6 ai-viewport-1 ai-viewport-2\">\n<div align=\"center\">\n<div id=\"passback_pc_article_mid1_728x90\/\/300x250\/\/336x280\"><\/div>\n<\/div>\n<\/div>\n<h2 id=\"ftoc-setuptools\" class=\"ftwp-heading\">Setuptools<\/h2>\n<p>\u0110\u1ec3 \u0111\u00f3ng g\u00f3i m\u1ed9t d\u1ef1 \u00e1n v\u1edbi setuptools, b\u1ea1n ph\u1ea3i t\u1ea1o m\u1ed9t t\u1ec7p .toml x\u00e1c \u0111\u1ecbnh setuptools l\u00e0m h\u1ec7 th\u1ed1ng x\u00e2y d\u1ef1ng. \u0110\u1eb7t \u0111o\u1ea1n n\u00e0y v\u00e0o t\u1ec7p c\u00f3 t\u00ean myhellolib.toml trong th\u01b0 m\u1ee5c d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n:<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-g1\">[<\/span><span class=\"enlighter-text\">build-system<\/span><span class=\"enlighter-g1\">]<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">requires = <\/span><span class=\"enlighter-g1\">[<\/span><span class=\"enlighter-s0\">&#8220;setuptools&#8221;<\/span><span class=\"enlighter-text\">, <\/span><span class=\"enlighter-s0\">&#8220;wheel&#8221;<\/span><span class=\"enlighter-g1\">]<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">build-backend = <\/span><span class=\"enlighter-s0\">&#8220;setuptools.build_meta&#8221;<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Ti\u1ebfp theo, t\u1ea1o m\u1ed9t t\u1ec7p c\u00f3 t\u00ean setup.py, ch\u1ee9a th\u00f4ng tin v\u1ec1 d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n:<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-text\">from setuptools import setup<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-m0\">setup<\/span><span class=\"enlighter-g1\">(<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> name=<\/span><span class=\"enlighter-s0\">&#8216;myhellolib&#8217;<\/span><span class=\"enlighter-text\">,<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> version=<\/span><span class=\"enlighter-s0\">&#8216;0.0.1&#8217;<\/span><span class=\"enlighter-text\">,<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> packages=<\/span><span class=\"enlighter-g1\">[<\/span><span class=\"enlighter-s0\">&#8216;myhellolib&#8217;<\/span><span class=\"enlighter-g1\">]<\/span><span class=\"enlighter-text\">,<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\"> install_requires=<\/span><span class=\"enlighter-g1\">[<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-s0\">&#8216;requests&#8217;<\/span><span class=\"enlighter-text\">,<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-s0\">&#8216;importlib; python_version == &#8220;3.8&#8221;&#8216;<\/span><span class=\"enlighter-text\">,<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-g1\">]<\/span><span class=\"enlighter-text\">,<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-g1\">)<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0110\u00f3 l\u00e0 t\u1ea5t c\u1ea3 nh\u1eefng g\u00ec m\u00e0 setuptools y\u00eau c\u1ea7u. D\u1ef1 \u00e1n c\u1ee7a b\u1ea1n \u0111\u00e3 s\u1eb5n s\u00e0ng \u0111\u1ec3 \u0111\u00f3ng g\u00f3i r\u1ed3i \u0111\u00f3.<\/p>\n<h2 id=\"ftoc-dong-goi-code\" class=\"ftwp-heading\">\u0110\u00f3ng g\u00f3i code<\/h2>\n<p>\u0110\u1ec3 t\u1ea1o g\u00f3i Python c\u1ee7a b\u1ea1n, b\u1ea1n c\u1ea7n m\u1ed9t builder. M\u1ed9t c\u00f4ng c\u1ee5 ph\u1ed5 bi\u1ebfn l\u00e0 i, b\u1ea1n c\u00f3 th\u1ec3 c\u00e0i \u0111\u1eb7t c\u00f4ng c\u1ee5 n\u00e0y b\u1eb1ng pip:<\/p>\n<p><code>python\u00a0<span class=\"re5\">-m<\/span>\u00a0pip\u00a0<span class=\"kw2\">install<\/span>\u00a0build\u00a0<span class=\"re5\">--user<\/span><\/code><\/p>\n<p>X\u00e2y d\u1ef1ng d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n:<\/p>\n<p><code>python\u00a0<span class=\"re5\">-m<\/span>\u00a0build<\/code><\/p>\n<p>Sau m\u1ed9t v\u00e0i ph\u00fat, qu\u00e1 tr\u00ecnh x\u00e2y d\u1ef1ng ho\u00e0n t\u1ea5t v\u00e0 c\u00f3 m\u1ed9t th\u01b0 m\u1ee5c m\u1edbi trong th\u01b0 m\u1ee5c d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n c\u00f3 t\u00ean l\u00e0 dist. Th\u01b0 m\u1ee5c n\u00e0y ch\u1ee9a t\u1ec7p .tar.gz v\u00e0 .whl.<\/p>\n<p>\u0110\u00e2y l\u00e0 g\u00f3i Python \u0111\u1ea7u ti\u00ean c\u1ee7a b\u1ea1n:<\/p>\n<div class=\"enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers \">\n<div class=\"enlighter\">\n<div class=\"\">\n<div><span class=\"enlighter-text\">$ tar &#8211;list &#8211;file dist\/myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-m3\">tar<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-m3\">gz<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/PKG-INFO<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/myhellolib\/<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/myhellolib\/__init__.<\/span><span class=\"enlighter-m3\">py<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/myhellolib\/myhellolib.<\/span><span class=\"enlighter-m3\">py<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/myhellolib.<\/span><span class=\"enlighter-m3\">egg<\/span><span class=\"enlighter-text\">-info\/<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/myhellolib.<\/span><span class=\"enlighter-m3\">egg<\/span><span class=\"enlighter-text\">-info\/PKG-INFO<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/myhellolib.<\/span><span class=\"enlighter-m3\">egg<\/span><span class=\"enlighter-text\">-info\/SOURCES.<\/span><span class=\"enlighter-m3\">txt<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/myhellolib.<\/span><span class=\"enlighter-m3\">egg<\/span><span class=\"enlighter-text\">-info\/dependency_links.<\/span><span class=\"enlighter-m3\">txt<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/myhellolib.<\/span><span class=\"enlighter-m3\">egg<\/span><span class=\"enlighter-text\">-info\/requires.<\/span><span class=\"enlighter-m3\">txt<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/myhellolib.<\/span><span class=\"enlighter-m3\">egg<\/span><span class=\"enlighter-text\">-info\/top_level.<\/span><span class=\"enlighter-m3\">txt<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/setup.<\/span><span class=\"enlighter-m3\">cfg<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">\/setup.<\/span><span class=\"enlighter-m3\">py<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-g0\">$<\/span><span class=\"enlighter-text\"> unzip -l dist\/myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">-py3-none-any.<\/span><span class=\"enlighter-m3\">whl<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">Archive: dist\/myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">-py3-none-any.<\/span><span class=\"enlighter-m3\">whl<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">Name<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">&#8212;-<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib\/__init__.<\/span><span class=\"enlighter-m3\">py<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib\/myhellolib.<\/span><span class=\"enlighter-m3\">py<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-m3\">dist<\/span><span class=\"enlighter-text\">-info\/METADATA<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-m3\">dist<\/span><span class=\"enlighter-text\">-info\/WHEEL<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-m3\">dist<\/span><span class=\"enlighter-text\">-info\/top_level.<\/span><span class=\"enlighter-m3\">txt<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">myhellolib-<\/span><span class=\"enlighter-m3\">0<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-n0\">0.1<\/span><span class=\"enlighter-text\">.<\/span><span class=\"enlighter-m3\">dist<\/span><span class=\"enlighter-text\">-info\/RECORD<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-text\">&#8212;&#8212;-<\/span><\/div>\n<\/div>\n<div class=\"\">\n<div><span class=\"enlighter-n1\">6<\/span><span class=\"enlighter-text\"> files<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<h2 id=\"ftoc-upload-code-da-dong-goi\" class=\"ftwp-heading\">Upload code \u0111\u00e3 \u0111\u00f3ng g\u00f3i<\/h2>\n<p><span data-darkreader-inline-color=\"\">B\u00e2y gi\u1edd b\u1ea1n \u0111\u00e3 bi\u1ebft c\u00e1ch \u0111\u00f3ng g\u00f3i code Python c\u1ee7a m\u00ecnh d\u1ec5 d\u00e0ng nh\u01b0 th\u1ebf n\u00e0o, b\u1ea1n c\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a quy tr\u00ecnh b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng Git hook, GitLab webhooks, Jenkins ho\u1eb7c m\u1ed9t c\u00f4ng c\u1ee5 t\u1ef1 \u0111\u1ed9ng h\u00f3a t\u01b0\u01a1ng t\u1ef1. B\u1ea1n th\u1eadm ch\u00ed c\u00f3 th\u1ec3 t\u1ea3i d\u1ef1 \u00e1n c\u1ee7a m\u00ecnh l\u00ean PyPi, kho l\u01b0u tr\u1eef ph\u1ed5 bi\u1ebfn cho c\u00e1c m\u00f4-\u0111un Python. Sau khi n\u00f3 \u1edf tr\u00ean PyPi, ng\u01b0\u1eddi d\u00f9ng c\u00f3 th\u1ec3 c\u00e0i \u0111\u1eb7t n\u00f3 b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng pip, gi\u1ed1ng nh\u01b0 c\u00e1ch b\u1ea1n \u0111\u00e3 c\u00e0i \u0111\u1eb7t setuptools v\u00e0 build.<\/span><\/p>\n<div class=\"code-block code-block-3 ai-viewport-1 ai-viewport-2\"><ins class=\"adsbygoogle\" data-ad-client=\"ca-pub-2642640466336649\" data-ad-slot=\"1057225058\" data-ad-format=\"auto\" data-full-width-responsive=\"true\" data-adsbygoogle-status=\"done\" data-ad-status=\"filled\"><ins id=\"aswift_3_expand\" tabindex=\"0\" title=\"Advertisement\" aria-label=\"Advertisement\"><ins id=\"aswift_3_anchor\"><\/ins><\/ins><\/ins><\/p>\n<div align=\"center\">\n<div id=\"passback_pc_article_below_728x90\/\/300x250\/\/336x280\" data-google-query-id=\"CJqvob6Zr_cCFRRklgodtjcAzQ\">\n<div id=\"google_ads_iframe_\/21622890900,22527870362\/VN_anonyviet.com_pc_article_below_728x90\/\/300x250\/\/336x280_0__container__\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0110\u00e2y kh\u00f4ng ph\u1ea3i l\u00e0 \u0111i\u1ec1u \u0111\u1ea7u ti\u00ean b\u1ea1n ngh\u0129 \u0111\u1ebfn khi ph\u00e1t tri\u1ec3n m\u1ed9t \u1ee9ng d\u1ee5ng ho\u1eb7c th\u01b0 vi\u1ec7n, nh\u01b0ng \u0111\u00f3ng g\u00f3i code l\u00e0 m\u1ed9t kh\u00eda c\u1ea1nh quan tr\u1ecdng c\u1ee7a l\u1eadp tr\u00ecnh. V\u00e0 m\u00ecnh ngh\u0129\u00a0<span data-darkreader-inline-color=\"\">setuptools l\u00e0 c\u00e1ch \u0111\u01a1n gi\u1ea3n nh\u1ea5t \u0111\u1ec3 \u0111\u00f3ng g\u00f3i code Python c\u1ee7a b\u1ea1n.<\/span><\/p>\n<p>Ngu\u1ed3n: anonyviet.com<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p class=\"tx-excerpt\">Trong b\u00e0i n\u00e0y, m\u00ecnh s\u1ebd h\u01b0\u1edbng d\u1eabn c\u00e1c b\u1ea1n \u0111\u00f3ng g\u00f3i code\u00a0Python. B\u1ea1n \u0111\u00e3 d\u00e0nh h\u00e0ng tu\u1ea7n \u0111\u1ec3 ho\u00e0n thi\u1ec7n code c\u1ee7a m\u00ecnh. B\u1ea1n \u0111\u00e3 th\u1eed nghi\u1ec7m n\u00f3 v\u00e0 g\u1eedi n\u00f3 cho tester","protected":false},"author":1,"featured_media":1086,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[13],"tags":[],"class_list":["post-1085","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/dt-corp.com.vn\/wp-content\/uploads\/2022\/04\/python_programming_question-1.jpg","_links":{"self":[{"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=\/wp\/v2\/posts\/1085","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1085"}],"version-history":[{"count":1,"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=\/wp\/v2\/posts\/1085\/revisions"}],"predecessor-version":[{"id":1087,"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=\/wp\/v2\/posts\/1085\/revisions\/1087"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=\/wp\/v2\/media\/1086"}],"wp:attachment":[{"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dt-corp.com.vn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}