Skip to content

Commit 8aecc1f

Browse files
fix: PyInstaller가 importlib.import_module을 못 잡는 에러 수정 및 로그 추가
1 parent 2da7a8f commit 8aecc1f

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

.github/workflows/build_release_and_notify.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,14 @@ jobs:
102102
--hidden-import=sqlalchemy.dialects.mysql.mysqlconnector \
103103
--hidden-import=sqlalchemy.dialects.postgresql \
104104
--hidden-import=sqlalchemy.dialects.oracle \
105+
--hidden-import=pymysql \
106+
--hidden-import=mysql.connector \
107+
--hidden-import=psycopg2 \
108+
--hidden-import=oracledb \
109+
--hidden-import=pyodbc \
105110
--collect-binaries psycopg2 \
106111
--collect-binaries oracledb \
112+
--collect-binaries pyodbc \
107113
--onefile \
108114
--name ${{ env.EXE_NAME }} app/main.py
109115

app/services/driver_service.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
# app/service/driver_service.py
22
import importlib
3+
import logging
34
import os
45
import sqlite3
56

67
from app.core.exceptions import APIException
78
from app.core.status import CommonCode
89
from app.schemas.driver.driver_info_model import DriverInfo
910

11+
logger = logging.getLogger(__name__)
12+
1013

1114
class DriverService:
1215
def read_driver_info(self, driver_info: DriverInfo):
@@ -15,16 +18,29 @@ def read_driver_info(self, driver_info: DriverInfo):
1518

1619
if driver_name == "sqlite3":
1720
version = sqlite3.sqlite_version
18-
path = sqlite3.__file__
19-
21+
try:
22+
path = sqlite3.__file__
23+
size = os.path.getsize(path) if path else None
24+
except (TypeError, OSError) as e:
25+
logger.exception(f"Driver import failed: {driver_info.driver_name}")
26+
logger.exception(f"error: {e}")
27+
path, size = None, None
2028
else:
2129
mod = importlib.import_module(driver_name)
2230
version = getattr(mod, "__version__", None)
23-
path = getattr(mod.__spec__, "origin", None)
31+
spec = getattr(mod, "__spec__", None)
32+
path = getattr(spec, "origin", None) if spec else None
33+
try:
34+
size = os.path.getsize(path) if path and os.path.exists(path) else None
35+
except OSError as e:
36+
logger.exception(f"Driver import failed: {driver_info.driver_name}")
37+
logger.exception(f"error: {e}")
38+
size = None
2439

25-
size = os.path.getsize(path) if path else None
2640
return driver_info.update_from_module(version, size)
2741
except (ModuleNotFoundError, AttributeError, OSError) as e:
42+
logger.exception(f"Driver import failed: {driver_info.driver_name}")
43+
logger.exception(f"error: {e}")
2844
raise APIException(CommonCode.FAIL) from e
2945

3046

0 commit comments

Comments
 (0)