python跨目录调用

在python中有时候我们需要调用另一.py文件中的方法或者类。
如果该.py文件与当前文件位于同一目录下那么问题非常容易解决。
如果两个.py文件位于不同的目录下就比较麻烦。

下面分别介绍如下:

1.两个.py文件位于同一目录下:

假设两个.py文件分别为test1.py, test2.py。现在在test2中想要调用test1.py中的fun1函数。

那么可以直接在test2中导入test1模块,代码为


import test1
test1.fun1() #调用
#或着直接导入所需函数
from test1 import fun1
fun1()#注意此时可以直接以函数名加括号的方式调用

2.两个.py文件位于不同的目录下:

假设两个.py文件分别为test1.py, test2.py,位于不同的目录。
现在在test2中想要调用test1.py中的fun1函数。
首先要确保test1.py文件所在的目录,在python的搜索路径中,这时候需要添加环境变量。
因为在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入
口脚本运行目录和sys.path中包含的路径。
添加环境变量的命令:

#python3自动加载sys模块
sys.path.insert(0, 'test1.py所在绝对路径') 
#或者使用
sys.path.append('test1.py所在绝对路径')

然后就是以文件包的形式导入,这时候需要在test2.py文件所在目录下创建init.py文件,文件可以为空。
该文件的主要作用是初始化Python包。
如果目录下面包含了该文件,Python解释器就会将该目录当做一个包,下一步就可以使用import语句在别的.py脚本中引用该目录下的文件。

如果创建的init.py为空则可以这样导入:

from 包名.test1 import fun1

如果在创建的init.py的文件中已经将test1导入包,方法是在init.py文件中添加语句

from test1 import fun1

这样就可以直接在包的水平直接导入函数

from 包名 import fun1

导入后,调用函数方式与1中相同。

猜你喜欢

转载自blog.csdn.net/huojiao2006/article/details/80843231