返回

macOS Sonoma 安装 xlwings 失败?appscript/psutil 依赖终极解决

python

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 上运行时,需要 appscriptpsutil 这两个库来跟 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。这稍微麻烦一点,但有时能解决一些奇奇怪怪的问题。

  1. 下载源码:

    appscript 的 PyPI 页面 (https://pypi.org/project/appscript/) 下载最新版本的源码包(.tar.gz 文件)。

  2. 解压:

    tar -xzf appscript-*.tar.gz
    

    * 替换成实际的版本号。

  3. 进入解压后的目录:

    cd appscript-*
    
  4. 编译安装:

    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 转译环境下运行。

  1. 找到你使用的终端应用(比如 Terminal, iTerm2)。
  2. 右键点击应用图标,选择“显示简介”。
  3. 勾选“使用 Rosetta 打开”。
  4. 重新打开终端,再尝试安装和运行。

7.检查防火墙和安全软件

有时,防火墙或者一些安全软件会阻止appscript这类库和应用程序(比如Excel)正常通讯,导致错误。虽然可能性不大,但也可以排查一下。

  • 暂时关闭macOS内置防火墙(系统设置->网络->防火墙),或者将 Excel, 你的终端, Python 加入白名单, 试试问题是否消失。
  • 如果你安装了第三方安全软件,类似地检查它的设置。

三、 安全建议

从源码安装第三方库时,务必从官方渠道(PyPI 或 GitHub)下载,并验证其完整性(比如校验 SHA256 值)。尽量使用虚拟环境,避免影响系统全局的 Python 环境。

经过上面的一番操作,应该能搞定 xlwings 在 macOS Sonoma 上的安装问题。 记住, 计算机世界的问题往往有多种原因,一种方法不行,就多试试其他的, 总有一个适合你!