bzz*_*zzr 8 python python-embedding python-3.x python-internals python-3.5
这是一个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();
}
Run Code Online (Sandbox Code Playgroud)
执行上述程序会引发以下错误:
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)
Run Code Online (Sandbox Code Playgroud)
那么除了encodings包之外,Python 3.5标准库中的哪些包和模块是运行Python 3.5解释器所必需的?在我的文档中似乎没有这些信息.
这些是在翻译启动期间使用的包/模块(如@Charles Duffy在评论中所述,通过查看sys.modules).
结果取决于你是否site启用了(你Py_NoSiteFlag = 1;暗示这不是这种情况,但无论如何,我会给出两种选择:-)).
site拖了几个与它额外的模块,当你使用它喜欢_sitebuiltins和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
Run Code Online (Sandbox Code Playgroud)
对于site残疾人,您将被剥离到以下内容6:
abc.py codecs.py encodings io.py os.py _weakrefset.py
Run Code Online (Sandbox Code Playgroud)
当通过(或通过基于您的评论的Windows)调用时C,Py_Initialize()我猜os.py可能实际上并不需要.