我四处寻找,没有找到任何好的答案。我刚刚从git中提取了python,并在Windows10上构建了它。python.exe文件在生成位置时工作正常,但如果复制或移动生成的文件夹,则在运行python..exe时会出现以下错误:
Python致命错误:Py_Initialize:无法加载文件系统编解码器查找错误:未注册编解码器搜索函数:找不到编码
当前线程0x000060c8(最近的调用优先):.\python致命python错误:Py_Initialize:无法加载文件系统编解码器ModuleNotFoundError:没有名为"encodings"的模块
当前线程0x00004f50(最近调用优先):
如果从构建目录运行python,这是一个奇怪的原因D:UsersbrazgDocumentsGitHubcpythonPCbuildamd64
运行良好。我想知道如果amd64
目录移出PCbuild
,为什么python.exe不运行。
顺便说一句,在从源代码构建之后,我找不到任何关于设置Python根文件夹的信息。
这是一个从未从源代码构建python的人的观点给出的答案
为了回答我自己的问题,在将Python二进制文件从cpythonPCbuild
移到另一个位置后需要做的是,您需要从拉取的源中复制Lib
目录,因为encodings
目录在cpythonLib
中。
即使您的构建是在cpythonPCbuild<build directory>
中,它仍然从cpythonLib
中读取,这是有道理的,但我认为应该在官方python文档中更清楚地说明。
如果将amd64
目录复制到新位置,则需要将cpythonLib
目录复制到amd64
目录中。您还可以从运行build.bat
中删除所有使用python构建的.exp, .lib and .pdb
文件。因为它们都是编译器的链接器和调试信息。
我希望cpythonPCbuild<build directory>
在运行时能读到cpythonLib
。