gpt4 book ai didi

python - 如何在导入 `site`模块之前运行Python代码?

转载 作者:行者123 更新时间:2023-12-01 06:55:49 26 4
gpt4 key购买 nike

有没有办法在导入 site 模块之前执行 Python 代码?

<小时/>

如果它很重要,我这么问是因为我正在通过 Py_Initialize 运行嵌入式 Python 解释器,并且我想使用 Python 代码配置 Python 环境,但是发生这种情况很重要在导入 site 模块之前,因为更改会影响其初始化方式。

最佳答案

您可以设置Py_NoSiteFlag在初始化 Python 解释器时禁止加载 site.pysite 可以稍后手动加载。

这是一个最小的例子:

#define PY_SSIZE_T_CLEAN
#include <Python.h>

int
main(int argc, char *argv[])
{
Py_NoSiteFlag = 1; /* Suppress 'import site' */
Py_Initialize();
PyRun_SimpleString("import sys; print('site' in sys.modules)\n");

//There are no site-packages in path:
PyRun_SimpleString("print(sys.path)\n");

// do what must be done
// ....

//now, import site manually,
//call site.main(), so site-packages are added to sys.path:
PyRun_SimpleString("import site; site.main()");

//now, site-packages are in path:
PyRun_SimpleString("print(sys.path)\n");

if (Py_FinalizeEx() < 0) {
exit(120);
}
return 0;
}

运行生成的可执行文件时,我们会看到 site 未在 Py_Initialize 中加载(第一行打印为 False),但已加载之后。我们还需要显式调用 site.main() 以便将站点包放入 sys.path 中。

关于python - 如何在导入 `site`模块之前运行Python代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58809899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com