{"id":267,"date":"2023-08-04T10:42:41","date_gmt":"2023-08-04T02:42:41","guid":{"rendered":"https:\/\/boostup.cf\/?p=267"},"modified":"2026-01-04T16:45:32","modified_gmt":"2026-01-04T08:45:32","slug":"%e4%b8%8d%e8%a6%81%e5%9c%a8python%e7%8e%af%e5%a2%83%e5%92%8c%e7%89%88%e6%9c%ac%e4%b8%8a%e9%9d%a2%e6%b5%aa%e8%b4%b9%e6%97%b6%e9%97%b4%e4%ba%86","status":"publish","type":"post","link":"https:\/\/189505.xyz\/?p=267","title":{"rendered":"python\u76f8\u5173"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_40 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" area-label=\"ez-toc-toggle-icon-1\"><label for=\"item-69e08e97e1cec\" aria-label=\"Table of Content\"><span style=\"display: flex;align-items: center;width: 35px;height: 30px;justify-content: center;direction:ltr;\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/label><input  type=\"checkbox\" id=\"item-69e08e97e1cec\"><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/189505.xyz\/?p=267\/#%E5%AE%89%E8%A3%85tf_1x\" title=\"\n\u5b89\u88c5tf 1.x \n\">\n\u5b89\u88c5tf 1.x \n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/189505.xyz\/?p=267\/#virtualenv%E6%96%B9%E6%B3%95\" title=\"\nvirtualenv\u65b9\u6cd5 \n\">\nvirtualenv\u65b9\u6cd5 \n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/189505.xyz\/?p=267\/#inspect_stack\" title=\"inspect stack\">inspect stack<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/189505.xyz\/?p=267\/#pudb\" title=\"pudb\">pudb<\/a><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E5%AE%89%E8%A3%85tf_1x\"><\/span>\n\u5b89\u88c5tf 1.x<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>pip\u6ca1\u6709\u529e\u6cd5\u5b89\u88c5\u4e86\uff0c\u56e0\u4e3apypi\u5b98\u65b9\u5df2\u7ecf\u628a1.x\u7ed9\u5220\u9664\u4e86\uff0c\u6ca1\u6709\u6e90\u4e86\uff0c\u8003\u8651conda\u5b89\u88c5<\/p>\n<pre>\n\n\u5b89\u88c5miniconda\ncurl https:\/\/repo.anaconda.com\/miniconda\/Miniconda3-latest-Linux-x86_64.sh -o Miniconda3-latest-Linux-x86_64.sh\nbash Miniconda3-latest-Linux-x86_64.sh\n\u5b89\u88c5 tf1.15\nconda create -n tf1.15 python=3.6\nconda activate tf1.15\nconda install tensorflow==1.15\n\nconda list env\n(base) D.Gen|icefire|2023-08-04 10:47:54[ice@ ~]conda env list\n conda environments:\n\nbase                  *  \/mast\/opt\/miniconda3\ntf1.15                   \/mast\/opt\/miniconda3\/envs\/tf1.15\n\n\u7b80\u5355\u8bad\u7ec3cifar10\nhttps:\/\/github.com\/leimao\/Convolutional_Neural_Network_CIFAR10\/tree\/master\n\u516d\u9053\u53e3\n<\/pre>\n<h1><span class=\"ez-toc-section\" id=\"virtualenv%E6%96%B9%E6%B3%95\"><\/span>\nvirtualenv\u65b9\u6cd5<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<pre><code>virtualenv --python=\/usr\/bin\/python \/mast\/pyvenv\/tf2-local\n. \/mast\/pyvenv\/tf2-local\/bin\/activate<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"inspect_stack\"><\/span>inspect stack<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<pre><code>class A:\n    def f(self):\n        self.g()\n\n    @classmethod\n    def g(cls):\n        A.h()\n\n    @staticmethod\n    def h():\n        import inspect\n        current_stack = inspect.stack()\n        stack_info = []\n        for idx, frame_info in enumerate(current_stack):\n            frame = frame_info.frame\n            func_name = frame_info.function\n            class_name = None\n            if &quot;self&quot; in frame.f_locals:\n                class_name = type(frame.f_locals[&quot;self&quot;]).__name__\n            elif &quot;cls&quot; in frame.f_locals:\n                class_name = frame.f_locals[&quot;cls&quot;].__name__\n            else:\n                code = frame.f_code\n                if hasattr(code, &#039;co_qualname&#039;):\n                    qualname = code.co_qualname\n                    print(f&quot;qualname:{qualname}&quot;)\n                    if &quot;.&quot; in qualname:\n                        class_name = frame.f_code.co_qualname.rsplit(&#039;.&#039;, 1)[0]\n            if class_name:\n                method_name = f&quot;{class_name}::{func_name}&quot;\n            else:\n                method_name = func_name\n            stack_info.append(\n                f&quot;{idx},{frame_info.filename}:{frame_info.lineno}:{method_name}&quot;)\n        stack_str = &quot;\\n &quot;.join(stack_info)\n        print(stack_str)\n\na1 = A()\na1.f()\n<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"pudb\"><\/span>pudb<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<pre><code>        # like_debug {\n        import os\n        import json\n        env_file = os.getenv(&quot;debug_env_file&quot;, &quot;\/share_data\/users\/like\/ipc.json&quot;)\n        env_data = dict()\n        if os.path.exists(env_file):\n            with open(env_file) as ifp:\n                env_data = json.load(ifp)\n        if env_data.get(&#039;debug_pudb&#039;, 0) == 1:\n            from pudb.remote import set_trace\n            set_trace(term_size=(229, 62), port=env_data.get(&#039;debug_pudb_port&#039;, 5090))\n        if env_data.get(&#039;debug_log&#039;, 0) == 1:\n            import inspect\n            current_stack = inspect.stack()\n            stack_info = []\n            for idx, frame_info in enumerate(current_stack):\n                frame = frame_info.frame\n                func_name = frame_info.function\n                class_name = None\n                if &quot;self&quot; in frame.f_locals:\n                    class_name = type(frame.f_locals[&quot;self&quot;]).__name__\n                elif &quot;cls&quot; in frame.f_locals:\n                    class_name = frame.f_locals[&quot;cls&quot;].__name__\n                else:\n                    code = frame.f_code\n                    if hasattr(code, &#039;co_qualname&#039;):\n                        qualname = code.co_qualname\n                        #print(f&quot;qualname:{qualname}&quot;)\n                        if &quot;.&quot; in qualname:\n                            class_name = frame.f_code.co_qualname.rsplit(&#039;.&#039;, 1)[0]\n                if class_name:\n                    method_name = f&quot;{class_name}::{func_name}&quot;\n                else:\n                    method_name = func_name\n                stack_info.append(\n                    f&quot;{idx},{frame_info.filename}:{frame_info.lineno}:{method_name}&quot;)\n            stack_str = &quot;| &quot;.join(stack_info)\n            log_str = f&quot; stack_str:{stack_str}&quot;\n            logger.info(log_str.replace(&quot;\\n&quot;, &quot; &quot;))\n        # like_debug }<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5b89\u88c5tf 1.x pip\u6ca1\u6709\u529e\u6cd5\u5b89\u88c5\u4e86\uff0c\u56e0\u4e3apypi\u5b98\u65b9\u5df2\u7ecf\u628a1.x\u7ed9\u5220\u9664\u4e86\uff0c\u6ca1\u6709\u6e90\u4e86\uff0c\u8003\u8651conda\u5b89\u88c5 \u5b89 &#8230; <a title=\"python\u76f8\u5173\" class=\"read-more\" href=\"https:\/\/189505.xyz\/?p=267\" aria-label=\"More on python\u76f8\u5173\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/189505.xyz\/index.php?rest_route=\/wp\/v2\/posts\/267"}],"collection":[{"href":"https:\/\/189505.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/189505.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/189505.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/189505.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=267"}],"version-history":[{"count":9,"href":"https:\/\/189505.xyz\/index.php?rest_route=\/wp\/v2\/posts\/267\/revisions"}],"predecessor-version":[{"id":680,"href":"https:\/\/189505.xyz\/index.php?rest_route=\/wp\/v2\/posts\/267\/revisions\/680"}],"wp:attachment":[{"href":"https:\/\/189505.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/189505.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/189505.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}