You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行setup.py py2app时依赖查找目录错误如何解决

问题根因

当前环境存在多套Python 3.9解释器,命令绑定错配:

  • 你执行python3 setup.py py2app -A时调用的是框架版Python,解释器路径为/Library/Frameworks/Python.framework/Versions/3.9/bin/python3,它默认的依赖搜索路径仅包含自身目录下的site-packages,也就是/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages
  • 你之前安装numpy时调用的pip3命令绑定的是另一套存放在/usr/local/路径下的Python 3.9,所以numpy被装到了/usr/local/lib/python3.9/site-packages目录,不在框架版Python的默认搜索路径里,才会触发DistributionNotFound报错。
    从你执行python3 -m pip --version的返回结果也能验证:和python3绑定的pip本身就在框架版Python的site-packages目录下,你之前装numpy时并没有用这个绑定的pip执行安装。
修复方案

二选一即可:

方案1:给当前打包用的Python解释器重装对应依赖(最稳妥,无兼容问题)

不要直接用pip3命令装包,统一用和当前python3解释器绑定的pip安装所有依赖,执行命令:

python3 -m pip install -r requirements.txt

命令执行完成后,numpy等所有依赖都会被安装到框架版Python的默认搜索路径下,直接重新执行打包命令即可正常运行。

方案2:配置py2app额外搜索已有的依赖目录(无需重复装包)

修改setup.py中的OPTIONS配置,把已有的/usr/local/lib/python3.9/site-packages路径加入py2app的依赖搜索列表,修改后的代码如下:

from setuptools import setup

with open('requirements.txt') as f:
    required = f.read().splitlines()

APP = ['option_pricer.py']
DATA_FILES = []
OPTIONS = {
    # 新增额外依赖搜索路径
    'extra_paths': ['/usr/local/lib/python3.9/site-packages']
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
    install_requires=required,
)

修改后重新执行打包命令,py2app会同时检查默认路径和你指定的额外路径下的依赖。

后续避坑提示

多Python环境下装包时,尽量不要直接调用pip/pip3命令,统一使用<你要用的python解释器路径> -m pip install <包名>的格式安装,就能从根源避免包装了但解释器找不到的路径错配问题。

内容的提问来源于stack exchange,提问作者thomas.mac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 00:54:31