Python - libs子文件夹有什么作用?

8
对我来说,它位于C:\Python33\libs。 参考资料 - 这与C:\Python33\Lib不是同一个文件夹 - 注意大小写和缺少's'。 在一台电脑上,我只需将.py文件放入libs文件夹中,就可以像库/模块一样导入和使用它(抱歉,我不太了解术语),而不管我正在工作的项目在哪里。 然而,在尝试在另一台机器上复制此操作时,这种方法行不通。尝试导入只会产生“没有名为X的模块”的错误。 因此,显然我误解了libs文件夹的目的以及它与Lib文件夹的区别。 那么,究竟有什么区别呢?
2个回答

8
如果你比较libs/和Lib/,你会发现后者充满了*.py文件,而前者则有*.lib文件。进一步使用文本编辑器进行调查将显示*.py文件是人类可读的(我希望如此),而*.lib文件则不是。
这就是区别所在。如果想了解更多,请访问.lib文件是静态链接库,用于构建.dlls、C扩展等等。如果你对此感兴趣,请前往rabbithole
关于你的问题的实质:你是否应该能够将模块放入其中并能够导入它们?不完全是。这是该文件夹包含在你的路径中的副作用。从Modules docs中可以看到:
当导入一个名为spam的模块时,解释器首先搜索具有该名称的内置模块。如果未找到,则在变量sys.path给出的目录列表中搜索名为spam.py的文件。 sys.path是从以下位置初始化的: - 包含输入脚本(或当前目录)的目录。 - PYTHONPATH(目录名称列表,与shell变量PATH具有相同的语法)。 - 安装相关的默认值。
各种安装方法都会修改%PATH%或%PYTHONPATH%,因此我无法告诉您确切的查找位置;在我的Windows计算机上,Python安装程序为我修改了%PATH%,因此您应该首先查看那里。值得注意的是,我的路径不包括Python33/libs/,因此我不希望它默认存在。

谢谢,非常清楚。我的路径中也没有包含Python33/libs/(在任何一台机器上都是如此)。也许我只是不知不觉地把一个副本放到了libs和Lib中?无论如何,你完美地回答了我的问题! - Kevin

0

仅就我的(Windows 7)而言,/libs 目录似乎是本地代码库(*.lib)与 /Lib 中的纯 Python 库不同。自述文件还提到了一个配置标志:

--with-libs='libs':将 'libs' 添加到 Python 解释器链接的 LIBS 中。

这可能在不同的安装/平台上设置或未设置。

这并不是真正的答案;希望有更深入了解的人能进一步解释 - 这只是有点太多信息无法压缩到评论中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接