擅长:python、mysql、java
<p>核心原因很简单:Python找不到它的modules目录,所以它当然也可以不加载<code>encodings</code></p>
<p><a href="https://docs.python.org/3/c-api/intro.html#embedding-python" rel="noreferrer">Python doc on embedding</a>说“<code>Py_Initialize()</code>根据其最佳猜测计算模块搜索路径…”特别是,它会查找名为<code>lib/pythonX.Y</code>的目录</p>
<p>然而,如果模块安装在(仅仅)相对于python二进制文件的<code>lib</code>中,那么上述猜测是错误的。</p>
<p>虽然文档中说<code>PYTHONHOME</code>和<code>PYTHONPATH</code>被认为是被考虑的,但我们发现事实并非如此;它们的实际存在或内容完全不相关。</p>
<p>唯一起作用的是调用<code>Py_SetPath()</code>,例如<code>[path-to]\lib</code>作为</strong><code>Py_Initialize()</code>之前的参数。</p>
<p>当然,这只是嵌入场景的一个选项,在嵌入场景中,可以直接访问和控制代码;使用现成的解决方案,可能需要特殊步骤来解决问题。</p>