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并不建议在项目里经常使用。   

  • 相关阅读:
    Codeforces Round #603 (Div. 2) E. Editor(线段树)
    Codeforces Round #603 (Div. 2) D. Secret Passwords(并查集)
    Java的DAO设计模式
    js实现本地时间同步
    循环播放
    正则表达式(2)
    正则表达式(1)
    第十八个知识点:画一个描述ECB,CBC,CTR模式的操作
    第十七个知识点:描述和比较DES和AES的轮结构
    第四十一个知识点 所有的侧信道分析都是能量分析吗
  • 原文地址:https://www.cnblogs.com/sunny666/p/9512221.html
Copyright © 2011-2022 走看看