zoukankan      html  css  js  c++  java
  • 包(package)

    一个文件夹管理多个模块文件,这个文件夹就被称为包,如下:

    既然是多个模块文件,那么涉及多个模块怎么导入呢?

    ***当前路径下包之间模块导入:

    import wsg

    ***不同路径下包之间模块导入:

              from proj import mds导入这个模块

    1.manege.py 作为入口程序导入

              from crm import vems

           vems.py模块下
         from proj import mds

    2.绝对路径导入

        import sys

         sys.append(proj路径(将要导入的模块绝对路径加到本路径。因为有import proj 所以取绝对路径要去掉proj))

    3.相对路径导入

    import os,sys
    os.path.abspath(__file__)#获取绝对路径
    BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取路径往上走两层
    sys.path.append(BASE_DIR)#添加路径
    from proj import mds


    相对导入

    在linux里可以通过cd ..回到上一层目录 ,cd ../.. 往上回2层,这个..就是指相对路径,在python里,导入也可以通过.

    package所对应的文件夹必须正确的被python解释器视作package,而不是普通文件夹。否则由于不被视作package,无法利用package之间的嵌套关系实现python中包的相对导入。

    文件夹被python解释器视作package需要满足两个条件:

    1. 文件夹中必须有__init__.py文件,该文件可以为空,但必须存在该文件。
    2. 不能作为顶层模块来执行该文件夹中的py文件(即不能作为主函数的入口)。

    注:虽然python支持相对导入,但对模块间的路径关系要求比较严格,处理不当就容易出错,so并不建议在项目里经常使用。   

  • 相关阅读:
    [go]go addressable 详解
    [go]灵活的处理json与go结构体
    [django]django内置的用户模型
    [go]文件读写&io操作
    *2.3.2_加入env
    UVM_INFO
    uvm_config_db在UVM验证环境中的应用
    *2.2.4 加入virtual interface
    *2.2.3 加入objection机制
    2.2.2 加入factory机制
  • 原文地址:https://www.cnblogs.com/sunny666/p/9512221.html
Copyright © 2011-2022 走看看