python import导入失败 相对路径 绝对路径

首先我们有这样一个目录结构

 

经过我无数次的调试,我发现从test3调用spider以及downloadss文件可以直接import调用

 

 

但是从外部的app.py文件调用,spider.py文件死活调用不出来

  

 

以上是downloadss.py文件的调用过程,以下是spyder.py文件的调用过程

 

 

 

 之前大多数程序都是在单个文件中进行运行,很少涉及到调用外部文件。

在此做一个记录。

在Python中,一个.py文件就称之为一个模块(Module),包含.py文件的文件夹,且里面有一个__init_.py的文件夹称为包(Package),init.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,它的模块名就是包名。在python脚本被执行,python导入其他包或模块时,python会根据sys.path列表里的路径寻找这些包或模块。如果没找到的话,程序就会报错。

在python文件导入的过程中如果遇到了一些文件导入的问题,将导入的格式换为绝对导入,大概率能解决

import sys,os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #将路径添加到系统路径中
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from core import downloadss

class SpiderMain():
def __init__(self):
down = downloadss.Downloader()
down.downloads('http://www.baidu.com')

引用成功

 

 

 

 

参考资料:

https://blog.csdn.net/weixin_44546620/article/details/104755730

https://stackoverflow.com/questions/14132789/relative-imports-for-the-billionth-time/14132912?newreg=4b2f909098bc4af7b9cfc46744ba21cd 

https://www.cnblogs.com/qi-yuan-008/p/12833189.html


 

posted @ 2021-12-21 10:56  r0nGer  阅读(1274)  评论(0编辑  收藏  举报