zoukankan      html  css  js  c++  java
  • python 的包的导入

    已经写过一篇包的导入了,最近又遇到了点问题,所以想把这些再搞的明白点就又试了试

    代码结构如下 

    在test目录下,有Admin包,home包,在home下有它的子包foo

    各个文件代码如下

    admins.py

    admin = "administrator"

    too.py

    from Admin import admins
    print(admins.admin)

    a.py

    aa = "sss"
    from . import b
    from Admin import admins
    from home.foo import too
    # print(bb)
    #print(b.bb)

    b.py

    bb = "ccc"
    from  .  import a
    #print(a.aa)

    c.py

    from home import a
    #print(a.Admin.admins)
    print(a.b.bb)
    #print(a.admins.admin)
    print(a.too.admins.admin)

    先说同包相互导入可以使用相对路径方式导入,但是这个导入后不能直接执行py文件,否则会报错找不到模块

    这个例子就是home包下的a.py和b.py相互导入

    在a和b里我们先定义变量再导入,否则会提示找不到变量,陷入到循环导入的错误中,同包相对路径导入是没问题的,并且不能直接执行py文件,需要在包外调用执行,就是使用c.py来调用执行

    看c的代码就可以看出来,可以通过a来调用到b的变量

    home里面的a.py要导入foo里面的模块的话就不能使用 相对路径的方式了,否则会报错提示以下错误

    ValueError: attempted relative import beyond top-level package

    这个原因是没把foo路径加到sys.path里,所以不能使用相对路径也就是..foo方式导入,必须用绝对路径了

    home.foo方式导入就没问题了

  • 相关阅读:
    使脱排油烟机能够听懂你的话(超级简单的方法)
    解决手机无法连接【小米AI音箱】播放音乐问题
    相机稳定器使用注意点
    Scrapy基本命令
    Linux环境下的Scala环境搭建
    Linux基本操作
    MySQL常用操作
    PySpark笔记
    Linux环境下配置及启动Hadoop(伪集群)
    idea: unable to import maven project
  • 原文地址:https://www.cnblogs.com/hh2737/p/9375703.html
Copyright © 2011-2022 走看看