gpt4 book ai didi

python - 运行 Python 3.5 解释器需要哪些标准库模块?

转载 作者:太空狗 更新时间:2023-10-29 20:55:41 25 4
gpt4 key购买 nike

这是一个 CPython 程序,它试图用一个空的 sys.path 来初始化解释器:

#include <Python.h>

int main(int argc, char** argv)
{
wchar_t* program = NULL;
wchar_t* sys_path = NULL;

Py_NoSiteFlag = 1;

program = Py_DecodeLocale(argv[0], NULL);
Py_SetProgramName(program);

sys_path = Py_DecodeLocale("", NULL);
Py_SetPath(sys_path);

Py_Initialize();

PyMem_RawFree(program);
PyMem_RawFree(sys_path);
Py_Finalize();
}

执行上面的程序会引发以下错误:

Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

Current thread 0x00007ffff7fc6700 (most recent call first):
Signal: SIGABRT (Aborted)

那么除了 encodings 包之外,Python 3.5 标准库中的哪些包和模块是运行 Python 3.5 解释器所必需的?在我看来,文档中没有这些信息。

最佳答案

这些是在解释器启动期间使用的包/模块(@Charles Duffy 在评论中指出,通过查看 sys.modules)。

结果取决于您是否启用了 site(您的 Py_NoSiteFlag = 1; 暗示情况并非如此,但无论如何,我会提供两种选择:-)).

site 在你使用它时会拖拽几个额外的模块,比如 _sitebuiltinsstat,总共你可以只使用 Python以下内容:

abc.py               encodings       os.py         _sitebuiltins.py  sysconfig.py
codecs.py genericpath.py posixpath.py site.py _collections_abc.py
io.py stat.py _weakrefset.py

在禁用 site 的情况下,您将被简化为以下 6:

abc.py  codecs.py  encodings  io.py  os.py  _weakrefset.py

当使用 Py_Initialize() 通过 C 调用时(或根据您的评论通过 Windows)我猜 os.py 可能不会实际需要。

关于python - 运行 Python 3.5 解释器需要哪些标准库模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40634115/

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