这个嵌入式Python打包如何找到其lib文件?
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-init 和 https://docs.python.org/3/library/site.html#module-site。
提问者似乎认为嵌入式Python在寻找模块方面有什么特别之处,相比于普通的、不可嵌入的Python。但其实并没有。官方文档中关于Windows上嵌入式Python的说明是这样的:
和应用程序使用一样,包可以安装到任何位置,因为在初始化解释器之前可以指定搜索路径。否则,使用嵌入式版本和普通安装之间没有根本性的区别。
(https://docs.python.org/3/using/windows.html#embedding-python)