在python系统路径中,为什么一个目录是另一个目录的子目录?

2024-10-03 13:16:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我的系统路径如下所示:

/homel/ychao/python/python_lib
/usr/lib64/python27.zip
/usr/lib64/python2.7
/usr/lib64/python2.7/plat-linux2
/usr/lib64/python2.7/lib-tk
/usr/lib64/python2.7/lib-old
/usr/lib64/python2.7/lib-dynload
/usr/lib64/python2.7/site-packages
/usr/lib64/python2.7/site-packages/PIL
/usr/lib64/python2.7/site-packages/gst-0.10
/usr/lib64/python2.7/site-packages/gtk-2.0
/usr/lib64/python2.7/site-packages/wx-2.8-gtk2-unicode
/usr/lib/python2.7/site-packages
/usr/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info
/usr/lib/python2.7/site-packages/IPython/extensions

我注意到有些目录都是/usr/lib64/python2.7的子目录,怎么可能是这样?当我删除所有子目录并使系统路径像这样:

^{pr2}$

我以前可以导入的一些包在修改后将失败。所以这意味着“导入”不知道递归地找到合适的包?在

谢谢!在


Tags: 路径libpackagesusr系统sitezipold
1条回答
网友
1楼 · 发布于 2024-10-03 13:16:58

so this means the "import" does not know to find the appropriate packages recursively?

没错。docs for ^{}在任何地方都没有提到递归。在

事实上,如果模块解析是递归的,您将得到令人困惑的行为。假设/usr/lib/python2.7/site-packages/ham在搜索路径上,并且您有文件

/usr/lib/python2.7/site-packages/ham
/usr/lib/python2.7/site-packages/ham/ham/util.py

你会做import util。如果在搜索路径上没有直接找到util.pyutil/__init__.py,那么递归处理将导致以错误的名称导入{},从而破坏Python的包/模块名称空间。在

相关问题 更多 >