← 返回博客
· 香槟(谢尚斌) 影刀RPAPython

影刀 RPA 运行 Python 报"Missing optional dependency openpyxl"?一文解决

影刀里运行 Python 脚本提示缺少 openpyxl,但 CMD 里运行却正常?原因是影刀和 CMD 用的是不同的 Python 环境。本文给出排查思路和三种解决办法。

直接给答案:CMD 里能跑、影刀里报 Missing optional dependency 'openpyxl',是因为影刀调用的 Python 环境和 CMD 里的不是同一个——openpyxl 装在了 CMD 那个环境里,而影刀用的环境里没有。解决办法:找到影刀实际用的 Python,给它装上 openpyxl,或者在影刀里直接指定 Python 的完整路径。

下面是完整的排查和解决过程。

报错长什么样

在影刀里用 DOS 指令运行 Python 脚本,提示:

读取开票明细表时出错: Missing optional dependency 'openpyxl'.
Use pip or conda to install openpyxl.

但同样的脚本,在 CMD 里直接运行完全正常。

为什么会这样

Windows 上经常同时存在多个 Python 环境:

  • 官网安装的 Python
  • Anaconda 的环境
  • 某些软件自带的 Python(不少 RPA/设计软件会内置一个)

CMD 里 python 命令走 PATH 环境变量,命中的是你装过 openpyxl 的那个;而影刀可能内置了自己的 Python,或者 PATH 解析顺序不同,命中的是另一个没有装 openpyxl 的干净环境

第一步:确认影刀用的是哪个 Python

在影刀的 DOS 指令里运行:

where python
python -c "import sys; print(sys.executable)"

再在 CMD 里运行同样的命令,对比两个输出——大概率会看到两条不同的路径,问题就实锤了。

解决办法(三选一)

方法一:给影刀那个环境装 openpyxl(推荐)

用影刀环境的路径执行安装:

"影刀环境的python.exe完整路径" -m pip install openpyxl

注意要用 python -m pip 而不是直接 pip,确保 pip 和 Python 是同一个环境,避免装错地方。

方法二:在影刀里指定 Python 完整路径

直接把影刀的 DOS 指令改成:

"C:\Path\To\Your\Python\python.exe" "你的脚本.py"

路径换成 CMD 里那个已经装好依赖的 Python。好处是指哪打哪,不受 PATH 影响。

方法三:建一个专门的虚拟环境(适合长期项目)

python -m venv rpa_env
rpa_env\Scripts\activate
pip install openpyxl pandas

然后在影刀里用这个虚拟环境的 Python 运行脚本。项目依赖独立管理,以后加库、换机器都不乱。

验证

在影刀里运行:

python -m pip list

确认 openpyxl 出现在列表里,再跑原脚本即可。

两个避坑提醒

  1. pip 和 Python 版本要配套。装的时候一定用 目标环境的python -m pip install,直接敲 pip install 很可能装到别的环境里去,白忙一场。
  2. 用 Anaconda 的话,可以 conda install openpyxl,也兼容 pip。两者区别简单记:pip 只管 Python 包、来自 PyPI;conda 是跨语言的环境管理器,自带环境隔离。日常 RPA 脚本用 pip 就够了。

做 RPA 落地时,环境类问题是最常见的”拦路虎”之一。如果你的团队也在被这类问题卡进度,可以找我聊聊