这两天在学习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就会引发错误,如下所示:
引发该异常的原因是: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 函数名
4、你也可以只把模块引入,然后使用模块名.函数名的方式调用模块中的函数,如下所示:
注:这种方式引用其他目录下的Python脚本,在解释器重新启动或者换了解释器后就会无效,需要重新执行上述1-3的步骤,一劳永逸的解决方式,以后等积累够了再更新...