Skip to content
 
 

Repository files navigation

cefpython — 自构建工作区

这是 cefpython 123.0 的自构建工作区(基于 CEF 123.0.6312.124)。 支持 Windows x64 和 macOS ARM64 平台。 上游项目的说明已移除,本 README 只保留你这套构建流程需要的内容。

CEF 二进制包下载(解压到 build/ 目录):

  • v66.0:https://cef-builds.spotifycdn.com/cef_binary_3.3359.1774.gd49d25f_windows64.tar.bz2
  • v123.0:https://cef-builds.spotifycdn.com/cef_binary_123.0.13+gfc703fb+chromium-123.0.6312.124_windows64.tar.bz2

目录约定

Windows x64

路径
cefpython 源码根 本目录(Claw/cefpython
CEF 二进制包解压根 build/cef_binary_123.0.13+gfc703fb+chromium-123.0.6312.124_windows64(下文 %BASE%
Python 虚拟环境 ../venv/Scripts/python.exe3.12.10 + Cython 3.2.8
编译器 Visual Studio 2022(vcvarsall.bat x64
CMake / Ninja D:\Android\SDK\cmake\4.1.2\bin 须在 PATH 最前

macOS ARM64

路径
cefpython 源码根 本目录
CEF 二进制包解压根 build/cef_binary_123.0.13+gfc703fb+chromium-123.0.6312.124_macosarm64
Python 虚拟环境 venv/bin/python33.12 + Cython 3.2.9
编译器 Apple Clang(Xcode Command Line Tools)
CMake 系统 cmake 或 /Users/silly/applications/CMake.app/Contents/bin/cmake

⚠️ 必须用虚拟环境里的 python 跑 build.py / make_installer.py(系统 Python 缺 Cython)。 ⚠️ 版本号参数用简短的 123.0(不是完整的 123.0.13+...)。

辅助脚本(已随整理移入本目录)

脚本 作用 用法
build_cefpython.bat 一键串联 步骤 C→G:拉 VC 环境 → cmake /MD 编 libcef_dll_wrapper → 复制为 _MD.libbuild.py 123.0make_bin_flat.pymake_installer.py --wheel → 归档 wheel 到 build/wheelhouse/ 在任意目录双击 / 命令行运行(基于自身目录 %~dp0 推导 Claw/venv/tools 路径,不依赖外部 CLAW 变量);日志写到 build_cefpython.log
make_bin_flat.py 对应构建文档步骤 F:把 CEF 运行时 dll + icudtl.dat/*.pak 扁平复制到 %BASE%/bin/ 根、locales/bin/locales/(坑3/坑4)。带文件锁降级容错 python make_bin_flat.py(内部 BASE 已写死为 build/cef_binary_123...,换 CEF 小版本需改此路径)

其余辅助脚本(_rebuild_wrapper_MD.bat / _build_wrapper.bat 等、冒烟测试 _cef_smoke.py)仍在 Claw\ 根目录,详见 ../cefpython_win64_build.md 第 11 节。

快速构建

准备虚拟环境(可选)

python -m venv ./venv
source ./venv/bin/activate  # Linux/macOS
# 或 .\venv\Scripts\activate  # Windows
pip install wheel setuptools cython

Windows x64

:: 在任意目录运行均可(脚本自己推导路径)
.\build.bat
:: 测试安装
pip install --force-reinstall  build/wheelhouse/cefpython3-123.0-cp312-none-win_amd64.whl

产物:build/wheelhouse/cefpython3-123.0-cp312-none-win_amd64.whl

macOS ARM64

# 确保已激活虚拟环境
source venv/bin/activate

# 安装依赖
brew install ninja  # 可选,有 ninja 会更快

# 一键构建(需要约 10-20 分钟)
./build.sh

产物:build/wheelhouse/cefpython3-123.0-cp312-none-macosx_11_0_arm64.whl

# 测试安装
pip install --force-reinstall build/wheelhouse/cefpython3-123.0-cp312-none-macosx_11_0_arm64.whl
python test_cef_smoke.py

macOS 构建流程说明

build.sh 执行以下步骤:

  1. 清理旧的构建文件
  2. 使用 CMake 编译 libcef_dll_wrapper(arm64 架构)
  3. 复制编译产物到 build/cef_mac64/(符号链接到实际 CEF 目录)
  4. 运行 build.py 123.0 编译 cefpython 模块
  5. 生成 wheel 安装包
  6. 归档到 build/wheelhouse/

⚠️ macOS 构建注意事项:

  • 必须使用 ARM64 架构的 CEF 二进制包(macosarm64 版本)
  • Python 必须是 arm64 版本(非 universal2)
  • 首次构建会失败一次(生成 Cython 头文件),脚本会自动重试

分步构建(手动)

步骤 A→H: A 解压 CEF 包 → B 改 libcef_dll/CMakeLists.txt 排除 TEST 源 → C 编 wrapper(/MD) → D 复制 _MD.lib → E build.py 123.0 → F make_bin_flat.py 造扁平 bin/(一键脚本已自动包含此步) G make_installer.py --wheel → H 安装 + 冒烟。

四个必踩的坑(摘要)

  1. obj 路径超 250 字符 (C1083):CEF test 源太深 → 注释 add_library 里 4 个 *_TEST_SRCS
  2. libcef_dll_wrapper_MD:wrapper 须 /MD 编,产物复制为 libcef_dll_wrapper_MD.lib
  3. No paths found: bin/*:官方 CEF 包无 bin/ → 用 make_bin_flat.py 造。
  4. ICU / locale 报错icudtl.dat/*.pak/locales/ 必须与 subprocess.exe 同级(bin/ 根),不要套 bin/Resources/

冒烟测试

.\venv\Scripts\python.exe -m pip install --force-reinstall --no-deps build\wheelhouse\cefpython3-123.0-cp312-none-win_amd64.whl
.\venv\Scripts\python.exe .\test_cef_smoke.py

标准 import 写法:from cefpython3 import cefpython as cef。退出码 0、无 ICU/locale 报错即 ✅。

产物

Windows

  • wheel:build/wheelhouse/cefpython3-123.0-cp312-none-win_amd64.whl
  • pyd:build/cefpython_binary_123.0_windows64/cefpython_py312.pyd

macOS ARM64

  • wheel:build/wheelhouse/cefpython3-123.0-cp312-none-macosx_11_0_arm64.whl
  • so:build/cefpython_binary_123.0_mac64/cefpython_py312.so
  • subprocess:build/cefpython_binary_123.0_mac64/subprocess

About

Python bindings for the Chromium Embedded Framework (CEF)

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages