# python_oh开源仓库 **Repository Path**: OpenHarmony_Python/python_oh ## Basic Information - **Project Name**: python_oh开源仓库 - **Description**: oh上原生使用python - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: 5.1.0_cpython_3.13.5 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 3 - **Created**: 2025-06-18 - **Last Updated**: 2026-02-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cpython交叉编译集成到OpenHarmony中 本仓库用于存放cpython3.13.5 集成到OpenHarmony标准系统的相关代码,下面以OpenHarmony5.1.0 rk3568为例集成python,其它设备和其它OpenHarmony版本参考本仓库修改适配即可。 ![alt text](./pic/image-1.png) > 目前适配进展:将cpython 3.13.5 交叉编译并且集成到固件中,除python中涉及gui的标准库不能使用外,其他标准库均可正常使用,pip可正常使用(仅纯python实现的pip库可正常使用) ``` # 拉取5.1.0 非tag分支代码 mkdir OpenHarmony-5.1.0-Release && cd OpenHarmony-5.1.0-Release repo init -u https://gitee.com/openharmony/manifest -b OpenHarmony-5.1.0-Release --no-repo-verify repo sync -c repo forall -c 'git lfs pull' # 下载本仓库到5.1r源码下 git clone -b 5.1.0_cpython_3.13.5 https://gitee.com/OpenHarmony_Python/python_oh.git python_oh # 打 5.1.0 3568 python适配补丁 patch -p1 < python_oh/5.1.0_3568_add_python.patch # 安装编译依赖 sudo apt-get install autoconf automake libtool texinfo xutils-dev cmake tcl8.6 # 安装python3.13 sudo add-apt-repository ppa:deadsnakes/ppa -y sudo apt update -y sudo apt install python3.13 -y # 交叉编译cpython chmod 777 python_oh/build_python_oh.sh bash python_oh/build_python_oh.sh # 编译3568固件 ./build.sh --product-name rk3568 --ccache ``` ## pip使用 ``` # 安装pip python3 -m ensurepip --upgrade # pip管理的三方列表 pip3 list # 安装requests库,使用国内清华源 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests ``` ## 单独编译 ``` # 32位 ./build.sh --product-name rk3568 --ccache --build-target=cpython # 64位 ./build.sh --product-name rk3568 --ccache --build-target=cpython --target-cpu arm64 ``` ## 总结与后续完善方向 1.python是解释型语言,这意味着不需要编译直接运行。python集成到OpenHarmony中,可以利用python的特性开发一些简单的应用。 ![alt text](./pic/image.png) 2.由于OpenHarmony使用的c和c++库不一样,所以暂时不支持c/c++实现的一些pip库 目前python的标准库除gui的标准库外,其他标准库基本可正常使用,纯py实现的pip库也可正常使用。 _tkinter, tkinter, turtle等gui库不可使用。_curses, curses, readline依赖系统库 libncurses 和 libreadline,缺少几个函数没有导出。 ``` # 进行模块导入测试 python3 01_test_importlib.py ------------------------------------------------------------ 导入测试完成! 成功导入: 273 个模块 跳过导入: 5 个模块 导入失败: 12 个模块 ============================================================ 导入失败的模块列表: ------------------------------------------------------------ 1. _curses -> Error relocating /system/lib/python3.13/lib-dynload/_curses.cpython-313.so: delwin: symbol not found 2. _curses_panel -> PyCapsule_Import could not import module "_curses" 3. _ios_support -> ObjC runtime library couldn't be loaded 4. _overlapped -> No module named '_overlapped' 5. _scproxy -> No module named '_scproxy' 6. _tkinter -> No module named '_tkinter' 7. _wmi -> No module named '_wmi' 8. curses -> Error relocating /system/lib/python3.13/lib-dynload/_curses.cpython-313.so: delwin: symbol not found 9. readline -> Error relocating /system/lib/python3.13/lib-dynload/readline.cpython-313.so: rl_initialize: symbol not found 10. tkinter -> No module named '_tkinter' 11. turtle -> No module named '_tkinter' 12. winsound -> No module named 'winsound' ------------------------------------------------------------ 总计 12 个模块导入失败 ```