这两天在学习Python,并根据教程写了一些Python脚本,但在之后需要调用的时候却发现不能直接import进来,于是花了点时间看看简单情况下的Python脚本调用。

   这里需要掌握的一个知识点就是:Python模块的搜索路径

当我们import 一个模块(即*.py)时,Python解释器首先在当前目录中寻找模块名称*.py的文件(如FibFunc.py)的文件;如果没有找到的话,就会到sys.path变量中给出的目录列表进行查找(FibFunc.py)。其中sys.path的初始值来自三个方向:1、输入脚本的目录(即当前工作目录);2、环境变量PYTHONPATH列表内容(如果没有定义这个,则只有当前目录);3、Python的安装路径;4、用户自己添加的搜索目录。因此,在引用Python脚本时就有了两种方式;

   

第一种,在同一个目录下边,直接import就行了,其语法格式是:from 模块名 import 函数名

模块名:即是你编写的*.py文件,函数名:指的是你在*.py文件名中使用 def

 

第二种,不在同一个目录下边,直接使用import就会引发系统异常:ModuleNotFoundError,比如说你定义了一个斐波那契数列的模块名为FibFunc.py,直接import就会引发错误,如下所示:

python 怎么引用上一个文件夹的py文件 python引用其他文件_搜索

 

 引发该异常的原因是:FibFunc.py的存放目录并没有在系统环境变量中记录,因此Python解释器并不会去该模块所在的文件夹寻找该模块,而是直接抛出系统异常。

解决的办法是:先引入sys.py的系统模块,然后在sys的path中添加FibFunc.py的存放路径,具体输入如下:

1、引入sys.py: import sys

2、添加路径到sys.path: sys.path.append("x:\\test")

3、引用模块:from 模块名 import 函数名

python 怎么引用上一个文件夹的py文件 python引用其他文件_搜索_02

 

 

python 怎么引用上一个文件夹的py文件 python引用其他文件_Python_03

4、你也可以只把模块引入,然后使用模块名.函数名的方式调用模块中的函数,如下所示:

python 怎么引用上一个文件夹的py文件 python引用其他文件_搜索_04

 

 注:这种方式引用其他目录下的Python脚本,在解释器重新启动或者换了解释器后就会无效,需要重新执行上述1-3的步骤,一劳永逸的解决方式,以后等积累够了再更新...