【Python】导入相对路径的模块

旧内容已过时

本质使用exec和sys.path,在项目打包时会造成各种问题。

下面的东西不用看了,看了浪费时间。(不想改单纯是因为已经打算不用CSDN了,因此文章内容不再维护





再更新

修好的XJImporter脚本发在别的博客里了:https://blog.csdn.net/weixin_44733774/article/details/126737346#XJImporter_42

打包后的程序总算能正常运行了




更新

如果项目是要打包运行的话那别用我下面的XJImporter脚本

好不容易把自己的一个整烂活给搞完,然后一打包,hjh程序根本跑不了,然后分析了一会儿发现,多半是因为导入错误,于是就把我所有用到XJImporter的代码全部删掉改成相对路径导入,一改就是几十分钟,巨恶心,而且还一语成谶,当时说什么“理想的python项目应该会导致项目根目录下堆满一堆的test脚本”结果还真中了。(应该是有别的更好的python的项目管理方法,例如打包成pyc?以后再了解吧

目前我暂时不想分析打包运行失败的原因,因为这一搞估计又是一天,乏了乏了,有心情再搞




原文

额,python什么都好,就一点不好,那就是项目的管理很让人头疼。场景如下:




我有一个项目,名为[Test],项目结构如下:

其中,Module_A需要导入模块Tool,但Tool.py并不与Module_A.py处于同一目录,也就是Module_A如果作为脚本运行的话根本没法直接导入模块Tool,只能作为模块将Tool导入。这就意味着Module_A的调试不能在Module_A.py中进行,而要在Tool所在路径下创建py脚本,然后将Module_A导入才能进行调试。这就涉及到py的“模块”和“脚本”的概念



以下是对脚本和模块的基本区分:

  1. 能双击直接运行的py文件视为脚本。
  2. 不能双击运行的py文件视为模块。
  3. 脚本可以作为模块被其他py文件导入,但脚本不一定能作为模块。
  4. 模块不能直接运行,也就是模块一定不会是脚本。



以下是个人支离破碎的理解:

  1. 如果py文件中使用了相对路径导入,那么这个py文件将无法作为脚本直接运行,只能作为模块被导入。
    from . import XXX
    from .XXX import classX
  2. 跨目录导入也视为相对路径导入,一样不能作为脚本直接运行。
    如模块导入语句from XXX import classX<
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值