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

FreeBSD13.1下Python3.9虚拟环境pip安装Scipy失败

解决FreeBSD 13.1-RELEASE-p3上Python3.9虚拟环境安装Scipy的编译错误

方案1:使用FreeBSD pkg安装预编译包(推荐)

FreeBSD官方ports提供了预编译的scipy包,直接通过pkg安装可跳过编译环节,避免报错:

  • 退出虚拟环境,执行系统级安装命令:
    # pkg install py39-scipy
    
  • 若需在虚拟环境中使用,可将系统包链接到虚拟环境目录:
    (env)$ ln -s /usr/local/lib/python3.9/site-packages/scipy ./env/lib/python3.9/site-packages/
    
    或者创建虚拟环境时添加--system-site-packages参数,直接继承系统已安装的Python包。

方案2:调整编译环境修复xsimd报错

如果必须通过pip编译安装,可尝试以下步骤:

  1. 安装编译依赖:
    FreeBSD下编译Scipy需要gcc、线性代数库等依赖,先安装:
    # pkg install gcc12 openblas lapack py39-pythran
    
  2. 指定gcc编译器:
    默认clang对xsimd的部分函数支持存在问题,切换到gcc编译:
    (env)$ CC=gcc12 CXX=g++12 pip install scipy
    
  3. 固定兼容版本的xsimd:
    报错源于xsimd头文件的函数定义冲突,先安装适配FreeBSD的xsimd版本再安装Scipy:
    (env)$ pip install xsimd==8.1.0
    (env)$ pip install scipy
    

临时应急方案(修改xsimd头文件)

若上述方法均无效,可临时修改编译环境中的xsimd头文件:

  1. 定位到报错文件(示例路径:/tmp/pip-build-env-cfphp0hs/overlay/lib/python3.9/site-packages/pythran/xsimd/arch/xsimd_scalar.hpp)
  2. 打开文件,找到涉及exp10f和exp10的冲突代码块,替换为适配FreeBSD的定义:
    // 注释原有冲突代码,添加以下内容
    namespace xsimd {
      inline float exp10(float x) { return ::exp10f(x); }
      inline double exp10(double x) { return ::exp10(x); }
    }
    
  3. 重新执行pip install scipy

内容的提问来源于stack exchange,提问作者argkh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:42:43