这个嵌入式Python打包如何找到其lib文件?

3 投票
1 回答
41 浏览
提问于 2025-04-14 16:45

Windows版的Blender(*)自带了一个嵌入式的Python,就像这样:

blender-2.79b-windows64\
    2.79\
        python\
            bin\
                python.exe
                python35.dll    # only these 2 files
            lib\
                asyncio\
                collections\
                ... 
                + many .py and .pyd files

即使你的电脑上没有安装全局的Python,运行 python.exe 也是可以的。而且,系统里也没有 .pth._pth 这样的文件。

问题是:python.exe 是怎么知道库文件在 ..\lib 里的呢?

注意 (*): 这并不是Blender特有的(我只是用Blender作为例子),很多软件都是这样自带Python的。

1 个回答

2

这里的'lib'目录是Python默认用来存放所有标准库模块的地方。这个目录名是系统自带的默认设置(不过你可以通过重新配置来改变它)。关于这一点有很多详细的说明,可以参考以下链接:https://docs.python.org/3/library/sys_path_init.html#sys-path-inithttps://docs.python.org/3/library/site.html#module-site

提问者似乎认为嵌入式Python在寻找模块方面有什么特别之处,相比于普通的、不可嵌入的Python。但其实并没有。官方文档中关于Windows上嵌入式Python的说明是这样的:

和应用程序使用一样,包可以安装到任何位置,因为在初始化解释器之前可以指定搜索路径。否则,使用嵌入式版本和普通安装之间没有根本性的区别。

(https://docs.python.org/3/using/windows.html#embedding-python)

撰写回答