python如何从一个文件中导入另外一个文件夹中的模块

本文深入探讨了Python中相对导入的常见问题及解决方案,强调了相对导入的适用场景和限制,如不可直接运行含有相对导入的脚本,以及如何通过调整模块结构、环境变量或使用特定导入包来解决相对导入引发的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前其实也讨论过这个话题,但是没有总结出一个简单的结论,报错其实都是相对导入带来的问题,一定不要运行有.或者…相对导入的脚本,这是必然会报错的,这种情况,它只能作为被调用模块,且要么在执行脚本的下一级作为包(注意这个等级要很低,参考之前的例子以及tensorlayer),要么直接添加环境变量(系统自动自带的或者自己添加,或者程序中软连接语句),要么直接采用特定的导入包吧(比如importlib等等),还有就是文件模块与包还是有区别的,文件夹是文件夹,是包,最好带个__init__文件(虽然我发现好像不带也可以),而模块通常只是一个py文件,要求低得多,有时候就算是多个文件组成一个文件夹也没关系,只要不要相互以相对导入的方式导入耦合就没问题,除非只是作为模块被调用。

网上有些稀奇古怪的解决方案,有的可能奏效,在特定场合,但由的估计不好使,但是应该都是从上面的角度出发的,绝对路径,环境变量,采用专用导入包等等。
比如:
https://blog.youkuaiyun.com/u010454261/article/details/85253686
典型的还是不能直接作为脚本运行,只能被调用。

https://blog.youkuaiyun.com/dss875914213/article/details/95762285
某些情况下解决linux或者windows以及网络编程中跨平台兼容性问题,但不是很扣主题。类似的还有斜杠与反斜杠,双斜杠,转义字符的问题。

https://blog.youkuaiyun.com/IDIOThh/article/details/82688095
典型的有问题,只有加点才可以,也有可能编译器的问题,也有可能坐着使用的方法不一样,或者打错了。。

https://blog.youkuaiyun.com/sky453589103/article/details/78863050
讲了半天没讲清楚要点,但是却是要经常使用一些信息来做辅助判断,比如__main____file__以及其他的包提供的信息,一定要注意指函数入口,main函数的真正归属,工作空间。

https://blog.youkuaiyun.com/chinaren0001/article/details/7338041
算是说到点子上了,但是没说这个模块式只能调用的,不能直接运行的。python自带的安装位置还是强,解决了很多问题,自带的绝对路径索引。

https://blog.youkuaiyun.com/qq_41185868/article/details/96476329
https://blog.youkuaiyun.com/default7/article/details/80790209
https://blog.youkuaiyun.com/jacke121/article/details/79438306
典型的傻叉。。

https://blog.youkuaiyun.com/xc_zhou/article/details/82150996
还行,但是没说完整,也没说到位。

https://blog.youkuaiyun.com/sinat_33793616/article/details/80945218
原理分析不够。

https://www.cnblogs.com/linkenpark/p/10909523.html
这个可以说讲的很细致了,也讲述了python工作机理,也描述了包的组成。

https://blog.youkuaiyun.com/ChaseNKSky/article/details/93847250
太幼稚,有些情况还是不能很好地使用。

https://blog.youkuaiyun.com/DarrenXf/article/details/82981439
这个讲的也不错,但是缺乏示例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值