通过查看NumPy的setup.py
,我注意到在某个时刻它包含了NumPy子模块numpy.distutils
中的一些内容。
from numpy.distutils.core import numpy_cmdclass
我真的看不出这是怎么回事,因为numpy.distutils
——我认为——应该是它试图安装的同一个包的一部分。如果一个软件包的安装依赖于它自己,那不是很好吗?这背后的工作原理是什么?为什么这样做?
我注意到它做了完全相同的事情,但来自实际上是包的一部分的文件。在第二种情况下,使用相对进口不是更好吗?
这只是Python的常规导入机制。模块搜索路径中的第一个目录是";包含输入脚本的目录";,此处为CCD_ 4。包的搜索方式与模块相同。
因此,当执行setup.py
时,它会在自己的目录中找到numpy
文件夹。该文件夹包含一个名为__init__.py
的文件,该文件将其标记为常规包。然后,模块加载器继续查找子包distutils
(它已被出售,因此不需要已经安装(和模块core.py
。