一、上级
1.1 情况1
如图所示的结构图,在m.py 中调用n.py
假如从n.py下导入A类
from ..n import A
特别的,scrapy爬虫中导入items.py的方式为:from ..items import JdItem
,JdItem为类名。
其实使用情况二的方式来也可以。
1.2 情况2
如果在上几级,如下图的结构所示,在m.py中调用n.py
导入的方式为
import sys,os
sys.path.append(os.getcwd())#将整个项目添加到搜索目录中
from test11 import n
例如下面的例子:
我要在main.py里调用common目录下的url_router.py里的一些方法,下面的main.py里的语句
common所在路径为/home/ubuntu/Documents/data/demo/common
那么所填的路径为/home/ubuntu/Documents/data/demo或者
/home/ubuntu/Documents/data/demo/
另:我们经常看到python文件的目录下会有__pycache__这个文件夹,我这边试了一下,在删除和添加上这个文件夹其实程序都可以运行。
二、同级
同级调用很简单
假如要导入n.py
import n
三、下级
如图的结构图
这个时候要在m.py中加入下面的代码
import sys,os
##将整个项目加入解析器的搜索目录
sys.path.append(os.getcwd())
在m.py文件中导入n.py
from test2 import n
注:使用os,sys定位模块位置
import os
print ('***获取当前目录***')
print (os.getcwd())
print (os.path.abspath(os.path.dirname(__file__)))
print ('***获取上级目录***')
print (os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
print (os.path.abspath(os.path.dirname(os.getcwd())))
print (os.path.abspath(os.path.join(os.getcwd(), "..")))
print ('***获取上上级目录***')
print (os.path.abspath(os.path.join(os.getcwd(), "../..")))
注意,该方法在交互模式下无法使用。