zoukankan      html  css  js  c++  java
  • 模块导入

    一.包

    当模块越来越多时,就需要把模块分类。像下图,一个文件夹管理多个模块,这个文件夹就叫做包。

    注:

    1.文件夹被视为包需要在文件夹内创建一个_init_.py文件,虽然在Python3中不加也不会出错,但是一般默认加此文件。

    2.不能作为主函数的入口。

    二.跨模块导入

    1.执行manage.py,manage.py所在的位置已经加到了sys.path了,当从crm中调用views.py时就不会报错。

    2.当不执行manage.py时,想直接从views.py中调用settings.py,需要加入想调用函数的路径。

    import os,sys
    
    BASEDIR = os.path.dirname(os.path.dirname(_file_))  #回到与crm、my_proj的同级目录
    
    sys.path.append(BASEDIR)                  #添加目录
    
    from proj import settings

    但此方法获取的是相对路径,程序执行时可能由于无法找到需要获取的模块而报错。

    3.

    import os,sys
    
    BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(_file_)))  #获取绝对路径之后再回到同级目录
    
    sys.path.append(BASEDIR)
    
    from proj import settings

    用这个方法先获取文件的绝对路径,就绝对不会出错了。

    三.相对导入

    假如执行manage.py后需要从views.py中调用models.py,需要用到 from crm import models ,而不能直接用import models调用,这是因为先执行manage.py,路径就是manage.py所在的路径,而manage.py

    所在的路径并不存在models.py,所以不能直接调用。

    假如,models.py和views.py与最外层目录间存在很多层目录,如果需要调用时,程序就需要写很多层,一直写到models.py所存在的目录。所以可以使用 from . impor models 调用。而 “.” 代表的就是当前目录。

    注:导入时一定不要到程序的根目录,假如到了文件的根目录的话,因为文件的根目录并不算是一个包,所以调用就会报错。

  • 相关阅读:
    移动 App 接入 QQ 登录/分享 图文教程
    Word 最后一页无法删除-解决办法
    Java快速入门-04-Java.util包简单总结
    Java快速入门-03-小知识汇总篇(全)
    SSM 框架-06-详细整合教程(IDEA版)(Spring+SpringMVC+MyBatis)
    二叉树的镜像
    浅析I/O模型及其设计模式
    远程方法调用(RMI)原理与示例
    树的子结构
    合并两个排序的链表
  • 原文地址:https://www.cnblogs.com/sunj-96/p/10746957.html
Copyright © 2011-2022 走看看