在C++中嵌入Python时,如何修正错误的PYTHONHOME配置
解决C++嵌入Python时PYTHONHOME路径错误的问题
方法一:临时/永久设置系统环境变量
- 临时生效(仅当前终端有效):
在启动VS Code的终端中执行以下命令,替换路径为你的Python实际安装目录:set PYTHONHOME=C:\Users\**USERNAME**\AppData\Local\Programs\Python\Python310 set PYTHONPATH=C:\Users\**USERNAME**\AppData\Local\Programs\Python\Python310\Lib;C:\Users\**USERNAME**\AppData\Local\Programs\Python\Python310\DLLs - 永久生效:
右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量列表中添加或修改:PYTHONHOME:值为Python安装根目录(如C:\Users\**USERNAME**\AppData\Local\Programs\Python\Python310)PYTHONPATH:值为{PYTHONHOME}\Lib;{PYTHONHOME}\DLLs
方法二:在代码中手动指定路径
在调用Py_Initialize()前,通过Python API手动设置路径,修改后的代码如下:
#include <iostream> #include <stdio.h> #include <Python.h> int main() { // 设置PYTHONHOME为你的Python安装目录 wchar_t pythonHome[] = L"C:\\Users\\**USERNAME**\\AppData\\Local\\Programs\\Python\\Python310"; Py_SetPythonHome(pythonHome); // 设置PYTHONPATH,包含Lib和DLLs目录 wchar_t pythonPath[] = L"C:\\Users\\**USERNAME**\\AppData\\Local\\Programs\\Python\\Python310\\Lib;C:\\Users\\**USERNAME**\\AppData\\Local\\Programs\\Python\\Python310\\DLLs"; Py_SetPath(pythonPath); Py_Initialize(); Py_Finalize(); return 0; }
注意:Windows下Python API使用宽字符路径,因此要用wchar_t类型,路径分隔符需写成双反斜杠\\。
方法三:配置VS Code编译任务(tasks.json)
在VS Code的.vscode/tasks.json中添加环境变量配置,确保编译运行时使用正确路径:
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: g++.exe build active file", "command": "C:\\MinGW64\\bin\\g++.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe", // 链接Python库,根据版本调整 "-IC:\\Users\\**USERNAME**\\AppData\\Local\\Programs\\Python\\Python310\\include", "-LC:\\Users\\**USERNAME**\\AppData\\Local\\Programs\\Python\\Python310\\libs", "-lpython310" ], "options": { "cwd": "${fileDirname}", "env": { "PYTHONHOME": "C:\\Users\\**USERNAME**\\AppData\\Local\\Programs\\Python\\Python310", "PYTHONPATH": "C:\\Users\\**USERNAME**\\AppData\\Local\\Programs\\Python\\Python310\\Lib;C:\\Users\\**USERNAME**\\AppData\\Local\\Programs\\Python\\Python310\\DLLs" } }, "problemMatcher": ["$gcc"], "group": { "kind": "build", "isDefault": true }, "detail": "编译器: C:\\MinGW64\\bin\\g++.exe" } ] }
关键注意事项
- 替换所有
**USERNAME**为你的实际系统用户名,路径需与Python实际安装目录完全匹配。 - 编译时必须链接对应版本的Python库(如
-lpython310对应Python3.10),库路径要指向Python安装目录下的libs文件夹。 - 若使用Anaconda等第三方Python发行版,路径需替换为该发行版的根目录。
内容的提问来源于stack exchange,提问作者Joseph Dinh
相关产品推荐
相关产品推荐

