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

Python/C API:解释器初始化前获取默认sys.path并修改的方法

在Python 3.11+中初始化解释器前获取默认sys.path并追加自定义路径

问题背景

你提到的原有初始化前修改sys.path的代码在Python 3.11+中失效,原因是PyConfig_Read()不再自动初始化路径相关字段,但你需要在解释器启动前将自定义路径追加到默认搜索列表中,而非初始化后修改。

解决方案

要在初始化前获取默认模块搜索路径,需要调用专门的路径初始化函数来填充PyConfig的路径字段,具体步骤及代码如下:

  1. 初始化PyConfig为默认Python配置
  2. 读取基础配置
  3. 调用PyConfig_InitSiteConfig()生成默认路径列表(3.11+版本必需的关键步骤)
  4. 标记使用自定义路径集
  5. 追加自定义路径
  6. 用配置初始化解释器

示例代码(省略异常处理):

PyConfig config;
PyConfig_InitPythonConfig(&config);
PyConfig_Read(&config);
// 关键:生成默认的模块搜索路径(3.11+新增步骤)
PyConfig_InitSiteConfig(&config);
// 标记要使用自定义的搜索路径列表
config.module_search_paths_set = 1;
// 追加自定义模块路径
PyWideStringList_Append(&config.module_search_paths, L"/path/to/your/module");
// 初始化Python解释器
Py_InitializeFromConfig(&config);
// 清理配置资源
PyConfig_Clear(&config);

补充说明

  • PyConfig_InitSiteConfig()会根据Python安装目录、系统环境变量等生成标准的默认sys.path对应路径,填充到config.module_search_paths中
  • 如果需要包含用户级别的路径(如用户目录下的site-packages),可额外调用PyConfig_InitUserConfig(&config)
  • 必须设置module_search_paths_set = 1,否则解释器会忽略你修改的路径列表,仍使用自动生成的默认路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:12:12