这个问题发生在我为了打包py文件为可执行代码而新建立的环境中,因为py代码需要与xecel交互,所以听取回复的建议,添加了这个代码段,但是提示我缺少comtypes模块,我明明已经安装了,
.
问题代码段:
import os
import sys
import platform
# 检查是否在Windows系统中运行
if platform.system() == "Windows":
# 设置mock caller
import win32com.client
from comtypes.client import GetActiveObject
def mock_get_active_object():
return GetActiveObject("Excel.Application")
if len(sys.argv) > 1 and sys.argv[1] == "--mock":
# 如果启动参数包含--mock,则设置mock caller
xw.App = mock_get_active_object
else:
# 否则,检查是否有Excel正在运行
try:
app = win32com.client.GetActiveObject("Excel.Application")
except Exception:
pass
else:
# 如果有Excel运行,使用它作为caller
xw.App = app
del mock_get_active_object
# 你的其他代码...
.
虽然在VSCode里ctrl + F5运行后没有报错,但是到excel表格里实际调用py代码时就会报错,不知道是什么原因,我又去查了这个环境下的包列表,确实是有comtypes的
.
这是包列表:
(toexe) F:\first\open>conda list
# packages in environment at C:\ProgramData\anaconda3\envs\toexe:
#
# Name Version Build Channel
altgraph 0.17.3 py38haa95532_0
ca-certificates 2024.3.11 haa95532_0
comtypes 1.1.14 py38haa95532_0
future 0.18.3 py38haa95532_0
libffi 3.4.4 hd77b12b_1
openssl 3.0.13 h2bbff1b_2
pefile 2022.5.30 py38haa95532_0
pip 24.0 py38haa95532_0
pyinstaller 5.13.2 py38h2bbff1b_0
pyinstaller-hooks-contrib 2022.14 py38haa95532_0
python 3.8.19 h1aa4202_0
pywin32 305 py38h2bbff1b_0
pywin32-ctypes 0.2.2 py38haa95532_0
setuptools 69.5.1 py38haa95532_0
sqlite 3.45.3 h2bbff1b_0
vc 14.2 h2eaa2aa_1
vs2015_runtime 14.29.30133 h43f2093_3
wheel 0.43.0 py38haa95532_0
xlwings 0.29.1 py38haa95532_0