You need to enable JavaScript to run this app. NumPy的setup.py导入自身待安装模块的运行原理及导入方式疑问
优惠活动
大模型
产品
解决方案
定价
更多

NumPy的setup.py导入自身待安装模块的运行原理及导入方式疑问

关于setup.py导入自身子模块的运行原理

  • NumPy的安装流程分为引导阶段和正式构建安装阶段,引导阶段会优先处理纯Python实现的numpy.distutils子模块:会将该子模块的全部代码复制到临时构建目录,并将该目录临时加入Python的模块搜索路径sys.path中
  • 此时from numpy.distutils.core import numpy_cmdclass导入的是临时目录下的本地代码副本,而非尚未安装到系统环境的目标包,不存在循环依赖问题
  • 另外numpy.distutils本身大部分是纯Python实现,不需要提前编译C/Fortran扩展,引导阶段即可直接加载使用,作用是为后续NumPy核心扩展的编译提供配置规则

关于内部代码优先使用绝对导入的原因

  • 可维护性更高:NumPy是层级非常深的大型项目,相对导入依赖文件相对位置,如果后续调整文件存储路径,所有关联的相对导入语句都需要修改;绝对导入只要模块的顶层命名不变,不需要调整导入语句
  • 可读性更强:绝对导入可以直接明了的显示被导入模块的完整路径,不需要开发者数层级点确认导入来源,符合PEP8的导入规范推荐
  • 历史兼容性:NumPy项目启动时早期Python版本的相对导入机制不完善,项目迭代过程中已经形成了使用绝对导入的开发习惯,大规模改写为相对导入没有收益还会引入额外风险
  • 适配场景更广:相对导入在直接将内部脚本作为入口运行时会报错,绝对导入只要将项目根目录加入sys.path即可正常运行,适配测试、调试等多种场景

内容的提问来源于stack exchange,提问作者Giuppox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 08:36:03