栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

儿童python教程201:Python导入模块的3种方式(超级详细)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

儿童python教程201:Python导入模块的3种方式(超级详细)

在编写完 Python 模块之后,如果直接用 import 或 from...import 来导入该模块,有时并不能正确地加载该模块。道理很简单,仅通过我们提供的模块文件名,Python 无法找到该模块文件。

编程其实并不难,就是用合适的语法告诉计算机,让它帮助完成某个工作。因此计算机能完成的事情,其实都是程序员预先告诉它的。

通常情况下,当使用 import 语句导入模块后,Python 会按照以下顺序查找指定的模块文件:
  • 在当前目录,即当前执行的程序文件所在目录下查找;
  • 到 PYTHONPATH(环境变量)下的每个目录中查找;
  • 到 Python 默认的安装目录下查找。
以上所有涉及到的目录,都保存在标准模块 sys 的 sys.path 变量中,通过此变量,可以输出指定程序文件支持查找的所有目录。因此,如果要导入的模块没有存储在 sys.path 显示的目录中,那么导入该模块并运行程序时,Python 解释器会抛出 ModuleNotFoundError(未找到模块)异常。

为了让 Python 能找到自定义(或第三方提供) 的模块,可以用以下 3 种方式来告诉它:
  1. 向 sys.path 中临时添加模块文件存储位置的完整路径;
  2. 将模块放在 sys.path 变量中已包含的模块加载路径中。
  3. 设置系统环境变量。
介绍这 3 种方式之前,为了能更方便地讲解,本节使用前面章节已建立好的 hello.py 自定义模块文件(D:python_modulehello.py)和 say.py 程序文件(C:UsersmengmaDesktopsay.py),它们各自包含的代码如下:

#hello.py

def say ():

    print("Hello,World!")



#say.py

import hello

hello.say()

可以看到,hello.py 文件和 say.py 文件并不在同一目录,此时运行 say.py 文件,其运行结果为:

 Traceback (most recent call last):
  File "C:UsersmengmaDesktopsay.py", line 1, in
    import hello
ModuleNotFoundError: No module named 'hello'

可以看到,Python 解释器抛出了 ModuleNotFoundError 异常。接下来,分别用以上 3 种方法解决这个问题。 导入模块方式一:临时添加模块完整路径 模块文件的存储位置,可以临时添加到 sys.path 变量中,即向 sys.path 中添加 D:python_module(hello.py 所在目录),在 say.py 中的开头位置添加如下代码:

import sys

sys.path.append('D:\python_module')
注意:在添加完整路径中,路径中的 '' 需要使用 进行转义,否则会导致语法错误。再次运行 say.py 文件,运行结果如下:

Hello,World!

可以看到,程序成功运行。在此基础上,我们在 say.py 文件中输出 sys.path 变量的值,会得到以下结果:

['C:\Users\mengma\Desktop', 'D:\python3.6\Lib\idlelib', 'D:\python3.6\python36.zip', 'D:\python3.6\DLLs', 'D:\python3.6\lib', 'D:\python3.6', 'C:\Users\mengma\AppData\Roaming\Python\Python36\site-packages', 'D:\python3.6\lib\site-packages', 'D:\python3.6\lib\site-packages\win32', 'D:\python3.6\lib\site-packages\win32\lib', 'D:\python3.6\lib\site-packages\Pythonwin', 'D:\python_module']

该输出信息中,红色部分就是临时添加进去的存储路径。需要注意的是,通过该方法添加的目录,只能在执行当前文件的窗口中有效,窗口关闭后即失效。 导入模块方式二:将模块保存到指定位置 如果要安装某些通用性模块,比如复数功能支持的模块、矩阵计算支持的模块、图形界面支持的模块等,这些都属于对 Python 本身进行扩展的模块,这种模块应该直接安装在 Python 内部,以便被所有程序共享,此时就可借助于 Python 默认的模块加载路径。

Python 程序默认的模块加载路径保存在 sys.path 变量中,因此,我们可以在 say.py 程序文件中先看看 sys.path 中保存的默认加载路径,向 say.py 文件中输出 sys.path 的值,如下所示:

['C:\Users\mengma\Desktop', 'D:\python3.6\Lib\idlelib', 'D:\python3.6\python36.zip', 'D:\python3.6\DLLs', 'D:\python3.6\lib', 'D:\python3.6', 'C:\Users\mengma\AppData\Roaming\Python\Python36\site-packages', 'D:\python3.6\lib\site-packages', 'D:\python3.6\lib\site-packages\win32', 'D:\python3.6\lib\site-packages\win32\lib', 'D:\python3.6\lib\site-packages\Pythonwin']

上面的运行结果中,列出的所有路径都是 Python 默认的模块加载路径,但通常来说,我们默认将 Python 的扩展模块添加在 libsite-packages 路径下,它专门用于存放 Python 的扩展模块和包。

所以,我们可以直接将我们已编写好的 hello.py 文件添加到  libsite-packages 路径下,就相当于为 Python 扩展了一个 hello 模块,这样任何 Python 程序都可使用该模块。

移动工作完成之后,再次运行 say.py 文件,可以看到成功运行的结果:

Hello,World!

导入模块方式三:设置环境变量 Python 将会根据 PYTHONPATH 环境变量的值来确定到哪里去加载模块。PYTHONPATH 环境变量的值是多个路径的集合,这样 Python 就会依次搜索 PYTHONPATH 环境变量所指定的多个路径,试图从中找到程序想要加载的模块。

下面介绍在不同平台上设置环境变量的方式。 在 Windows 平台上设置环境变量 右击桌面上的“计算机”图标,出现右键菜单;单击“属性”菜单项,系统显示“控制面板所有控制面板项系统”窗口,单击该窗口左边栏中的“高级系统设置”链接,出现“系统属性”对话框,如图 1 所示。

图 1 系统属性对话框
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号