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

在C++中嵌入Python代码运行报错:未声明编码的SyntaxError

解决C++嵌入Python时的SyntaxError编码问题

哦,我一眼就看穿问题所在了——你居然把自己编译好的C++可执行文件当成Python脚本去读取了!

错误根源

你代码里用了fopen(argv[0],"r"),而argv[0]指向的是当前运行的程序路径,也就是那个叫./cppPython的二进制可执行文件。这玩意儿根本不是纯文本的Python代码,里面全是机器码和各种非ASCII的二进制字符,Python解释器尝试解析它的时候,自然会抛出编码错误。

正确的解决步骤

1. 分离Python代码

把你要执行的Python逻辑单独存成一个纯文本的.py文件,比如命名为script.py,如果代码里有非ASCII字符,记得在文件开头加上编码声明:

# -*- coding: utf-8 -*-
# 这里写你的Python代码
print("Hello from embedded Python!")

2. 修改C++代码

把打开文件的路径改成你的Python脚本路径,而不是argv[0]。下面是修正后的C++代码示例:

#include <Python.h>
#include <iostream>
using namespace std;

int main(int argc, char *argv[]) {
    // 初始化Python解释器
    Py_Initialize();

    // 打开你的Python脚本文件(替换成实际路径)
    FILE *fp = fopen("./script.py", "r");
    if (fp == nullptr) {
        cerr << "无法打开Python脚本文件" << endl;
        return 1;
    }

    // 执行Python脚本
    PyRun_SimpleFile(fp, "./script.py");

    // 关闭文件和Python解释器
    fclose(fp);
    Py_Finalize();
    return 0;
}

3. 编译与运行

编译时要确保正确链接Python库,比如针对Python3.8,编译命令大概是:

g++ your_code.cpp -o cppPython -I/usr/include/python3.8 -lpython3.8

然后运行编译后的程序,就能正常执行嵌入的Python代码了。

额外小提示

如果只是简单的Python代码,也可以直接用PyRun_SimpleString执行字符串形式的代码,省去文件操作:

PyRun_SimpleString("print('Hello from embedded Python!')");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:14:50