这是一个 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)
那么Python 3.5标准库中除了encodings
包,是运行 Python 所必需的3.5
口译员?在我看来,文档中似乎没有此信息。
这些是解释器启动期间使用的包/模块(如 @Charles Duffy 在评论中指出的那样,通过查看sys.modules
).
结果取决于你是否有site
启用与否(您的Py_NoSiteFlag = 1;
暗示情况并非如此,但无论如何,我都会给出两个选项:-))。
site
当您像这样使用它时,会拖动几个附加模块_sitebuiltins
and stat
,总共您可以仅使用以下命令来运行 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
with site
禁用,您将被精简为以下内容6
:
abc.py codecs.py encodings io.py os.py _weakrefset.py
当通过调用时C
with Py_Initialize()
(或根据您的评论通过Windows)我猜os.py
可能实际上并不需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)