zoukankan      html  css  js  c++  java
  • python之绝对导入和相对导入

    绝对导入

    import sys, os
    
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    sys.path.append(BASE_DIR)

    __file__是相对路径,是因为pycharm吧之前的路径给补上了才没有报错,在终端执行就会报错,所以要用绝对路径。

    import sys, os
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(BASE_DIR)

    这样程序在哪执行都不会报错了

    相对导入

    import sys, os
    
    from . import models
    from ..proj import settings

    一个点的意思是在当前目录导入
    两个点是在上一级目录导入
    ../..是在上两级目录导入

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

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

    所以,当用.. 或 ../..返回上级去导入的时候,如果到了程序的入口就会报错:

    ValueError: attempted relative import beyond top-level package

    这是因为第2条的原因,也就是相对导入的时候不能返回到顶层目录去导入,否则会报错。所以,用绝对导入的人比较多,相对导入中一个点(同级导入)用的比较多。

  • 相关阅读:
    作为管理者的基本职责
    websocket接口自动化的封装
    locust性能测试的使用
    git的协作提交流程
    关于接口自动化的实施步骤
    K8S的组件梳理
    jenkins pipeline中,失败后获取异常不中断业务
    pipline在执行的docker镜像中添加hosts
    sonar搭建
    django
  • 原文地址:https://www.cnblogs.com/lshedward/p/9995704.html
Copyright © 2011-2022 走看看