macOS Sonoma 安装 xlwings 失败?appscript/psutil 依赖终极解决
2025-03-17 09:12:30
macOS Sonoma 上 xlwings 安装失败:appscript 和 psutil 依赖问题解决
上来就碰一鼻子灰?刚想在 macOS Sonoma (14.7.1) 上用 Anaconda 装个 xlwings (Python 3.12),结果直接报错:XlwingsError: Make sure to have "appscript" and "psutil", dependencies of xlwings, installed.
。 用 pip
重装也没用。别慌,咱们来一步步解决。
一、 问题出在哪儿?
简单来说,xlwings 在 macOS 上运行时,需要 appscript
和 psutil
这两个库来跟 Excel 进行通信。报错信息很直接,就是告诉你缺这两个依赖。Anaconda 或 pip 安装 xlwings 时,有时不会自动解决这些 macOS 特有的依赖。
二、 解决方法
1. 直接安装依赖 (最简单)
既然缺啥补啥,最直接的想法就是手动安装这两个库:
pip install appscript psutil
或者, 如果你偏爱 conda:
conda install -c conda-forge psutil
# appscript 在 conda-forge 上可能找不到,还是建议用 pip 安装
执行命令安装。大部分情况下,这样就搞定了。如果不行,继续往下看。
2. 确保 Xcode 命令行工具已安装
appscript
的编译有时候会依赖 Xcode 的命令行工具。如果你之前没装过,或者装的版本太老,可能会导致安装失败。
-
检查是否安装:
xcode-select -p
如果有输出路径 (比如
/Library/Developer/CommandLineTools
),说明已经安装了。 -
安装或更新:
xcode-select --install
弹出的窗口,按照提示安装即可。安装完之后,再试试方法 1。
3. 针对 appscript 的特殊处理
appscript
比较“娇气”,有时候直接 pip install
会有问题。尤其是当系统里有多个 Python 环境的时候。以下提供几种针对 appscript 的“特别关照”:
- 方法 3.1: 使用指定版本的 setuptools
有些时候, 较新版本的setuptools
反而会导致appscript
构建错误。可以试试安装一个指定版本:
pip install setuptools==57.5.0
pip install appscript
之后记得把 setuptools
升级回来:
pip install -U setuptools
- 方法 3.2:从源码安装 (进阶)
如果上面的方法都无效,可以尝试从源码安装 appscript
。这稍微麻烦一点,但有时能解决一些奇奇怪怪的问题。
-
下载源码:
去
appscript
的 PyPI 页面 (https://pypi.org/project/appscript/) 下载最新版本的源码包(.tar.gz 文件)。 -
解压:
tar -xzf appscript-*.tar.gz
把
*
替换成实际的版本号。 -
进入解压后的目录:
cd appscript-*
-
编译安装:
python setup.py install
如果提示权限不够,可以加上
sudo
:sudo python setup.py install
- 方法 3.3(备选) pyobjc
如果 appscript 安装让你十分头疼, 有个偏方可以尝试, 但效果不保证: 安装pyobjc
。虽然 xlwings 官方文档没直接提, 但有用户反馈安装它之后, 问题解决了.
pip install pyobjc
4. 使用虚拟环境(强烈推荐)
为了避免不同项目之间的依赖冲突,强烈建议使用虚拟环境。这能保证每个项目都有自己独立的 Python 环境和依赖库。
-
使用 conda 创建虚拟环境:
conda create -n my_xlwings_env python=3.12 conda activate my_xlwings_env
my_xlwings_env
是你给虚拟环境起的名字,可以自己改。 -
使用 venv 创建虚拟环境 (Python 自带):
python3.12 -m venv my_xlwings_env source my_xlwings_env/bin/activate # macOS 或 Linux
创建并激活虚拟环境后,再在这个环境下安装 xlwings 和相关依赖。
5. 检查 Python 版本和架构
理论上 Python 3.12 应该没问题,但如果问题依旧,可以看看是否是 Python 版本或者架构不匹配导致的。
import platform
print(platform.python_version())
print(platform.architecture())
确保版本是 3.12.x, 并且架构和你的 Mac 匹配 (通常是 '64bit', 'macOS', ...)。
6. (针对使用Apple芯片的用户)Rosetta 2 转译
如果你的 Mac 使用的是 Apple 芯片 (M1, M2, M3 等),并且之前安装的 Python 或 Anaconda 是 x86_64 架构的,可能需要在 Rosetta 2 转译环境下运行。
- 找到你使用的终端应用(比如 Terminal, iTerm2)。
- 右键点击应用图标,选择“显示简介”。
- 勾选“使用 Rosetta 打开”。
- 重新打开终端,再尝试安装和运行。
7.检查防火墙和安全软件
有时,防火墙或者一些安全软件会阻止appscript
这类库和应用程序(比如Excel)正常通讯,导致错误。虽然可能性不大,但也可以排查一下。
- 暂时关闭macOS内置防火墙(系统设置->网络->防火墙),或者将 Excel, 你的终端, Python 加入白名单, 试试问题是否消失。
- 如果你安装了第三方安全软件,类似地检查它的设置。
三、 安全建议
从源码安装第三方库时,务必从官方渠道(PyPI 或 GitHub)下载,并验证其完整性(比如校验 SHA256 值)。尽量使用虚拟环境,避免影响系统全局的 Python 环境。
经过上面的一番操作,应该能搞定 xlwings 在 macOS Sonoma 上的安装问题。 记住, 计算机世界的问题往往有多种原因,一种方法不行,就多试试其他的, 总有一个适合你!