一、上级

1.1 情况1

如图所示的结构图,在m.py 中调用n.py

python同级目录调用 导入同级目录下的py文件_python同级目录调用

假如从n.py下导入A类

from ..n import A 特别的,scrapy爬虫中导入items.py的方式为:from ..items import JdItem,JdItem为类名。

其实使用情况二的方式来也可以。

1.2 情况2

如果在上几级,如下图的结构所示,在m.py中调用n.py

python同级目录调用 导入同级目录下的py文件_python同级目录调用_02

导入的方式为

import sys,os
sys.path.append(os.getcwd())#将整个项目添加到搜索目录中
from test11 import n

例如下面的例子:

python同级目录调用 导入同级目录下的py文件_搜索_03


我要在main.py里调用common目录下的url_router.py里的一些方法,下面的main.py里的语句

python同级目录调用 导入同级目录下的py文件_搜索_04


common所在路径为/home/ubuntu/Documents/data/demo/common

那么所填的路径为/home/ubuntu/Documents/data/demo或者

/home/ubuntu/Documents/data/demo/

另:我们经常看到python文件的目录下会有__pycache__这个文件夹,我这边试了一下,在删除和添加上这个文件夹其实程序都可以运行。

二、同级

同级调用很简单
假如要导入n.py

import n

三、下级

如图的结构图

python同级目录调用 导入同级目录下的py文件_ubuntu_05

这个时候要在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(), "../..")))


python同级目录调用 导入同级目录下的py文件_ubuntu_06


注意,该方法在交互模式下无法使用。