{"cells":[{"cell_type":"markdown","id":"GTG-zSlVYDJg","metadata":{"id":"GTG-zSlVYDJg"},"source":["# cstore_suite Colab 런처\n","\n","이 노트북은 `cstore_suite` 프로젝트를 Colab에서 한 번에 실행하기 위한 런처입니다.\n","\n","순서대로 위에서 아래로 셀만 실행하면 됩니다.\n"]},{"cell_type":"code","execution_count":null,"id":"DBPgdiZp0aP0","metadata":{"colab":{"background_save":true},"executionInfo":{"elapsed":4,"status":"aborted","timestamp":1763530193256,"user":{"displayName":"이혜지","userId":"11960777193249666496"},"user_tz":-540},"id":"DBPgdiZp0aP0"},"outputs":[{"name":"stderr","output_type":"stream","text":["ERROR:root:Internal Python error in the inspect module.\n","Below is the traceback from this internal error.\n","\n","ERROR:root:Internal Python error in the inspect module.\n","Below is the traceback from this internal error.\n","\n","ERROR:root:Internal Python error in the inspect module.\n","Below is the traceback from this internal error.\n","\n"]},{"name":"stdout","output_type":"stream","text":["Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 3553, in run_code\n"," exec(code_obj, self.user_global_ns, self.user_ns)\n"," File \"/tmp/ipython-input-693870770.py\", line 1, in \u003ccell line: 0\u003e\n"," get_ipython().run_line_magic('cd', '/content/cstore_suite')\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2418, in run_line_magic\n"," result = fn(*args, **kwargs)\n"," ^^^^^^^^^^^^^^^^^^^\n"," File \"\u003cdecorator-gen-85\u003e\", line 2, in cd\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/magic.py\", line 187, in \u003clambda\u003e\n"," call = lambda f, *a, **k: f(*a, **k)\n"," ^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/magics/osm.py\", line 342, in cd\n"," oldcwd = os.getcwd()\n"," ^^^^^^^^^^^\n","OSError: [Errno 107] Transport endpoint is not connected\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n"," stb = value._render_traceback_()\n"," ^^^^^^^^^^^^^^^^^^^^^^^^\n","AttributeError: 'OSError' object has no attribute '_render_traceback_'\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1101, in get_records\n"," return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 248, in wrapped\n"," return f(*args, **kwargs)\n"," ^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 281, in _fixed_getinnerframes\n"," records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 1769, in getinnerframes\n"," traceback_info = getframeinfo(tb, context)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 1714, in getframeinfo\n"," filename = getsourcefile(frame) or getfile(frame)\n"," ^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 970, in getsourcefile\n"," module = getmodule(object, filename)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 999, in getmodule\n"," file = getabsfile(object, _filename)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 983, in getabsfile\n"," return os.path.normcase(os.path.abspath(_filename))\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"\u003cfrozen posixpath\u003e\", line 415, in abspath\n","OSError: [Errno 107] Transport endpoint is not connected\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 3553, in run_code\n"," exec(code_obj, self.user_global_ns, self.user_ns)\n"," File \"/tmp/ipython-input-693870770.py\", line 1, in \u003ccell line: 0\u003e\n"," get_ipython().run_line_magic('cd', '/content/cstore_suite')\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2418, in run_line_magic\n"," result = fn(*args, **kwargs)\n"," ^^^^^^^^^^^^^^^^^^^\n"," File \"\u003cdecorator-gen-85\u003e\", line 2, in cd\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/magic.py\", line 187, in \u003clambda\u003e\n"," call = lambda f, *a, **k: f(*a, **k)\n"," ^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/magics/osm.py\", line 342, in cd\n"," oldcwd = os.getcwd()\n"," ^^^^^^^^^^^\n","OSError: [Errno 107] Transport endpoint is not connected\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n"," stb = value._render_traceback_()\n"," ^^^^^^^^^^^^^^^^^^^^^^^^\n","AttributeError: 'OSError' object has no attribute '_render_traceback_'\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 3473, in run_ast_nodes\n"," if (await self.run_code(code, result, async_=asy)):\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 3575, in run_code\n"," self.showtraceback(running_compiled_code=True)\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2101, in showtraceback\n"," stb = self.InteractiveTB.structured_traceback(etype,\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1367, in structured_traceback\n"," return FormattedTB.structured_traceback(\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1267, in structured_traceback\n"," return VerboseTB.structured_traceback(\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1124, in structured_traceback\n"," formatted_exception = self.format_exception_as_a_whole(etype, evalue, etb, number_of_lines_of_context,\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1082, in format_exception_as_a_whole\n"," last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 382, in find_recursion\n"," return len(records), 0\n"," ^^^^^^^^^^^^\n","TypeError: object of type 'NoneType' has no len()\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n"," stb = value._render_traceback_()\n"," ^^^^^^^^^^^^^^^^^^^^^^^^\n","AttributeError: 'TypeError' object has no attribute '_render_traceback_'\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1101, in get_records\n"," return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 248, in wrapped\n"," return f(*args, **kwargs)\n"," ^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 281, in _fixed_getinnerframes\n"," records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 1769, in getinnerframes\n"," traceback_info = getframeinfo(tb, context)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 1714, in getframeinfo\n"," filename = getsourcefile(frame) or getfile(frame)\n"," ^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 970, in getsourcefile\n"," module = getmodule(object, filename)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 999, in getmodule\n"," file = getabsfile(object, _filename)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 983, in getabsfile\n"," return os.path.normcase(os.path.abspath(_filename))\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"\u003cfrozen posixpath\u003e\", line 415, in abspath\n","OSError: [Errno 107] Transport endpoint is not connected\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 3553, in run_code\n"," exec(code_obj, self.user_global_ns, self.user_ns)\n"," File \"/tmp/ipython-input-693870770.py\", line 1, in \u003ccell line: 0\u003e\n"," get_ipython().run_line_magic('cd', '/content/cstore_suite')\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2418, in run_line_magic\n"," result = fn(*args, **kwargs)\n"," ^^^^^^^^^^^^^^^^^^^\n"," File \"\u003cdecorator-gen-85\u003e\", line 2, in cd\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/magic.py\", line 187, in \u003clambda\u003e\n"," call = lambda f, *a, **k: f(*a, **k)\n"," ^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/magics/osm.py\", line 342, in cd\n"," oldcwd = os.getcwd()\n"," ^^^^^^^^^^^\n","OSError: [Errno 107] Transport endpoint is not connected\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n"," stb = value._render_traceback_()\n"," ^^^^^^^^^^^^^^^^^^^^^^^^\n","AttributeError: 'OSError' object has no attribute '_render_traceback_'\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 3473, in run_ast_nodes\n"," if (await self.run_code(code, result, async_=asy)):\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 3575, in run_code\n"," self.showtraceback(running_compiled_code=True)\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2101, in showtraceback\n"," stb = self.InteractiveTB.structured_traceback(etype,\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1367, in structured_traceback\n"," return FormattedTB.structured_traceback(\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1267, in structured_traceback\n"," return VerboseTB.structured_traceback(\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1124, in structured_traceback\n"," formatted_exception = self.format_exception_as_a_whole(etype, evalue, etb, number_of_lines_of_context,\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1082, in format_exception_as_a_whole\n"," last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 382, in find_recursion\n"," return len(records), 0\n"," ^^^^^^^^^^^^\n","TypeError: object of type 'NoneType' has no len()\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n"," stb = value._render_traceback_()\n"," ^^^^^^^^^^^^^^^^^^^^^^^^\n","AttributeError: 'TypeError' object has no attribute '_render_traceback_'\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 3030, in _run_cell\n"," return runner(coro)\n"," ^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/async_helpers.py\", line 78, in _pseudo_sync_runner\n"," coro.send(None)\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 3257, in run_cell_async\n"," has_raised = await self.run_ast_nodes(code_ast.body, cell_name,\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 3492, in run_ast_nodes\n"," self.showtraceback()\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2101, in showtraceback\n"," stb = self.InteractiveTB.structured_traceback(etype,\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1367, in structured_traceback\n"," return FormattedTB.structured_traceback(\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1267, in structured_traceback\n"," return VerboseTB.structured_traceback(\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1142, in structured_traceback\n"," formatted_exceptions += self.format_exception_as_a_whole(etype, evalue, etb, lines_of_context,\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1082, in format_exception_as_a_whole\n"," last_unique, recursion_repeat = find_recursion(orig_etype, evalue, records)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 382, in find_recursion\n"," return len(records), 0\n"," ^^^^^^^^^^^^\n","TypeError: object of type 'NoneType' has no len()\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/interactiveshell.py\", line 2099, in showtraceback\n"," stb = value._render_traceback_()\n"," ^^^^^^^^^^^^^^^^^^^^^^^^\n","AttributeError: 'TypeError' object has no attribute '_render_traceback_'\n","\n","During handling of the above exception, another exception occurred:\n","\n","Traceback (most recent call last):\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 1101, in get_records\n"," return _fixed_getinnerframes(etb, number_of_lines_of_context, tb_offset)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 248, in wrapped\n"," return f(*args, **kwargs)\n"," ^^^^^^^^^^^^^^^^^^\n"," File \"/usr/local/lib/python3.12/dist-packages/IPython/core/ultratb.py\", line 281, in _fixed_getinnerframes\n"," records = fix_frame_records_filenames(inspect.getinnerframes(etb, context))\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 1769, in getinnerframes\n"," traceback_info = getframeinfo(tb, context)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 1714, in getframeinfo\n"," filename = getsourcefile(frame) or getfile(frame)\n"," ^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 970, in getsourcefile\n"," module = getmodule(object, filename)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 999, in getmodule\n"," file = getabsfile(object, _filename)\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"/usr/lib/python3.12/inspect.py\", line 983, in getabsfile\n"," return os.path.normcase(os.path.abspath(_filename))\n"," ^^^^^^^^^^^^^^^^^^^^^^^^^^\n"," File \"\u003cfrozen posixpath\u003e\", line 415, in abspath\n","OSError: [Errno 107] Transport endpoint is not connected\n"]}],"source":["%cd /content/cstore_suite"]},{"cell_type":"code","execution_count":7,"id":"setup_project","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":256},"executionInfo":{"elapsed":2520,"status":"error","timestamp":1763530504418,"user":{"displayName":"이혜지","userId":"11960777193249666496"},"user_tz":-540},"id":"setup_project","outputId":"a33dfd95-9a46-477e-f6e3-c0121bd4a9e7"},"outputs":[{"name":"stdout","output_type":"stream","text":["✅ Python version: 3.12.12 (main, Oct 10 2025, 08:52:57) [GCC 11.4.0]\n","Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"]},{"ename":"OSError","evalue":"[Errno 107] Transport endpoint is not connected","output_type":"error","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)","\u001b[0;32m/tmp/ipython-input-1340184868.py\u001b[0m in \u001b[0;36m\u003ccell line: 0\u003e\u001b[0;34m()\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0mcandidates\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"/content/cstore_suite\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# Colab에서 ZIP 풀어서 쓴 경우\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mcandidates\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"/content/drive/MyDrive/cstore_suite\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# Drive에 폴더가 있는 경우\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---\u003e 24\u001b[0;31m \u001b[0mcandidates\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetcwd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# 현재 폴더\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0mproj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mOSError\u001b[0m: [Errno 107] Transport endpoint is not connected"]}],"source":["# 1️⃣ Colab / Jupyter 환경에서 cstore_suite 프로젝트 폴더 자동 설정\n","import os, sys\n","\n","print(\"✅ Python version:\", sys.version)\n","\n","# (선택) Google Colab 에서 실행 중이면 Drive 마운트 시도\n","IN_COLAB = False\n","try:\n"," from google.colab import drive # type: ignore\n"," IN_COLAB = True\n","except Exception:\n"," IN_COLAB = False\n","\n","if IN_COLAB:\n"," try:\n"," drive.mount(\"/content/drive\")\n"," except Exception as e:\n"," print(\"⚠ Drive 마운트 중 경고:\", e)\n","\n","# 프로젝트 위치 후보들\n","candidates = []\n","candidates.append(\"/content/cstore_suite\") # Colab에서 ZIP 풀어서 쓴 경우\n","candidates.append(\"/content/drive/MyDrive/cstore_suite\") # Drive에 폴더가 있는 경우\n","candidates.append(os.getcwd()) # 현재 폴더\n","\n","proj = None\n","for p in candidates:\n"," if os.path.isdir(p):\n"," proj = p\n"," break\n","\n","if proj is None:\n"," raise FileNotFoundError(\n"," \"cstore_suite 프로젝트 폴더를 찾지 못했습니다.\\n\"\n"," \"- /content/cstore_suite 또는 /content/drive/MyDrive/cstore_suite 위치를 확인하세요.\"\n"," )\n","\n","os.chdir(proj)\n","print(\"📁 작업 폴더:\", os.getcwd())\n","print(\"📂 포함 파일:\", os.listdir())\n"]},{"cell_type":"code","execution_count":null,"id":"install_requirements","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":220},"executionInfo":{"elapsed":46,"status":"error","timestamp":1763530163826,"user":{"displayName":"이혜지","userId":"11960777193249666496"},"user_tz":-540},"id":"install_requirements","outputId":"f007b1e7-b1aa-4c08-cdc6-b65584b90950"},"outputs":[{"ename":"OSError","evalue":"[Errno 107] Transport endpoint is not connected","output_type":"error","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)","\u001b[0;32m/tmp/ipython-input-3246530550.py\u001b[0m in \u001b[0;36m\u003ccell line: 0\u003e\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubprocess\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----\u003e 4\u001b[0;31m \u001b[0mreq_path\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetcwd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"requirements.txt\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexists\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"⚠ requirements.txt 가 없어 기본 템플릿을 생성합니다: {req_path}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mOSError\u001b[0m: [Errno 107] Transport endpoint is not connected"]}],"source":["# 2️⃣ requirements.txt 기반 의존성 설치\n","import os, subprocess, sys\n","\n","req_path = os.path.join(os.getcwd(), \"requirements.txt\")\n","if not os.path.exists(req_path):\n"," print(f\"⚠ requirements.txt 가 없어 기본 템플릿을 생성합니다: {req_path}\")\n"," with open(req_path, \"w\", encoding=\"utf-8\") as f:\n"," f.write(\"pandas==2.2.2\\n\")\n"," f.write(\"numpy==1.26.4\\n\")\n"," f.write(\"streamlit==1.39.0\\n\")\n"," f.write(\"altair\u003e=5,\u003c6\\n\")\n"," f.write(\"scikit-learn\\n\")\n"," f.write(\"pyngrok\\n\")\n"," f.write(\"cloudflared\\n\")\n"," f.write(\"xgboost\\n\")\n"," f.write(\"lightgbm\\n\")\n"," f.write(\"optuna\\n\")\n","else:\n"," print(\"📑 requirements.txt 위치:\", req_path)\n","\n","print(\"📦 의존성 설치 중... (다소 시간이 걸릴 수 있습니다)\")\n","subprocess.run([sys.executable, \"-m\", \"pip\", \"install\", \"-r\", req_path], check=True)\n","print(\"✅ 의존성 설치 완료\")\n"]},{"cell_type":"code","execution_count":null,"id":"auto_train","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":16,"status":"ok","timestamp":1763097971961,"user":{"displayName":"박종훈","userId":"17966453500002937995"},"user_tz":-540},"id":"auto_train","outputId":"c104b1cb-1aff-4ef8-99eb-e55d8477e50b"},"outputs":[{"name":"stdout","output_type":"stream","text":["✅ 이미 학습된 모델이 있습니다: /content/drive/MyDrive/cstore_suite/models/best_model.pkl\n"]}],"source":["# 3️⃣ 모델 자동 학습 (models/best_model.pkl 이 없을 때만 수행)\n","import os, sys, glob, subprocess\n","\n","proj = os.getcwd()\n","models_dir = os.path.join(proj, \"models\")\n","os.makedirs(models_dir, exist_ok=True)\n","best_model_path = os.path.join(models_dir, \"best_model.pkl\")\n","\n","if os.path.exists(best_model_path):\n"," print(\"✅ 이미 학습된 모델이 있습니다:\", best_model_path)\n","else:\n"," data_dir = os.path.join(proj, \"data\")\n"," if not os.path.isdir(data_dir):\n"," raise FileNotFoundError(f\"data 폴더를 찾지 못했습니다: {data_dir}\")\n","\n"," candidates = [p for p in glob.glob(os.path.join(data_dir, \"*.csv\")) if os.path.isfile(p)]\n"," if not candidates:\n"," raise FileNotFoundError(f\"data 폴더에서 CSV 파일을 찾지 못했습니다: {data_dir}\")\n","\n"," data_path = None\n"," # 우선순위: sample_sales.csv → seoul_gyeonggi_with_demand.csv → 그 외 첫 번째\n"," for name in [\"sample_sales.csv\", \"seoul_gyeonggi_with_demand.csv\"]:\n"," cand = os.path.join(data_dir, name)\n"," if os.path.exists(cand):\n"," data_path = cand\n"," break\n"," if data_path is None:\n"," data_path = candidates[0]\n","\n"," print(\"📊 학습에 사용할 데이터:\", data_path)\n","\n"," cmd = [\n"," sys.executable,\n"," \"quick_train_runner.py\",\n"," \"--data\", data_path,\n"," \"--project\", proj,\n"," \"--valid_ratio\", \"0.2\",\n"," \"--use_optuna\",\n"," \"--optuna_trials\", \"10\",\n"," ]\n"," print(\"🚀 학습 명령:\", \" \".join(cmd))\n"," subprocess.run(cmd, check=True)\n"," if os.path.exists(best_model_path):\n"," print(\"✅ 학습 및 모델 저장 완료:\", best_model_path)\n"," else:\n"," print(\"⚠ quick_train_runner.py 실행은 끝났지만 best_model.pkl 을 찾지 못했습니다.\")\n"]},{"cell_type":"code","execution_count":null,"id":"run_streamlit","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"run_streamlit","outputId":"f98365b7-2f7a-4847-f8c3-5b2ae49a7ef7"},"outputs":[{"name":"stdout","output_type":"stream","text":["NGROK_AUTHTOKEN 을 입력하세요(없으면 엔터): 34Ug4uB0dodqJJVE41prai7dVdp_48R3SS6GGeSabkZFP89Xw\n","🌐 ngrok 터널을 여는 중...\n","🌐 Public URL: https://debra-didactic-preculturally.ngrok-free.dev\n","➡ 위 URL 을 새 탭에서 열면 Streamlit 앱에 접속할 수 있습니다.\n","(셀을 멈추면 터널도 종료됩니다.)\n","🚀 Streamlit 실행: /usr/bin/python3 -m streamlit run app_streamlit_pro.py --server.port 8501 --server.address 0.0.0.0\n"]}],"source":["# 4️⃣ Streamlit 앱 + ngrok 터널 실행\n","# - 셀 실행 후 출력되는 Public URL 로 접속하면 앱 화면이 보입니다.\n","\n","import os, sys, subprocess, time\n","\n","from pyngrok import ngrok, conf\n","\n","# 기존 터널 정리\n","try:\n"," ngrok.kill()\n","except Exception:\n"," pass\n","\n","port = 8501\n","\n","# 토큰 읽기 (환경변수 우선, 없으면 입력 받기)\n","token = os.environ.get(\"NGROK_AUTHTOKEN\", \"\").strip()\n","if not token:\n"," try:\n"," token = input(\"NGROK_AUTHTOKEN 을 입력하세요(없으면 엔터): \").strip()\n"," except EOFError:\n"," token = \"\"\n","\n","if token:\n"," conf.get_default().auth_token = token\n","else:\n"," print(\"⚠ NGROK_AUTHTOKEN 이 비어 있습니다. 비인증 모드는 제한/에러가 날 수 있습니다.\")\n","\n","# ngrok 터널 오픈\n","print(\"🌐 ngrok 터널을 여는 중...\")\n","tunnel = ngrok.connect(addr=f\"http://localhost:{port}\", proto=\"http\")\n","public_url = tunnel.public_url\n","print(\"🌐 Public URL:\", public_url)\n","print(\"➡ 위 URL 을 새 탭에서 열면 Streamlit 앱에 접속할 수 있습니다.\")\n","print(\"(셀을 멈추면 터널도 종료됩니다.)\")\n","\n","# Streamlit 앱 실행 (로그는 아래에 출력)\n","cmd = [\n"," sys.executable,\n"," \"-m\", \"streamlit\",\n"," \"run\", \"app_streamlit_pro.py\",\n"," \"--server.port\", str(port),\n"," \"--server.address\", \"0.0.0.0\",\n","]\n","print(\"🚀 Streamlit 실행:\", \" \".join(cmd))\n","subprocess.run(cmd, check=True)\n"]}],"metadata":{"colab":{"name":"","version":""},"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.11.8"}},"nbformat":4,"nbformat_minor":5}