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

  • 相关阅读:
    面试
    无中生有
    数字称王-0-10000,
    数组排序
    uiview 阴影
    TTTAtibutedlabel again
    vim配置python编程环境及YouCompleteMe的安装教程
    centos7下vim8.1的编译安装教程
    centos7下误执行chmod -R 777 /后的权限修复方法
    如何用浏览器在线查看.ipynb文件
  • 原文地址:https://www.cnblogs.com/sunny666/p/9512221.html
Copyright © 2020-2023  润新知