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方式导入就没问题了
python 的包的导入的更多相关文章
- 第10.9节 Python子包的导入方式介绍
在<第10.8节 Python包的导入方式详解>详细介绍了包的导入方式,子包也是包,子包的导入与包的导入方法上没有本质区别,但二者还是有所不同.本节对照二者的方式介绍子包与包导入的关系: ...
- 7行代码,彻底告别python第三方包import导入问题!
最近有不少小伙伴咨询关于pyton第三方包导入的问题,今天我们就来聊聊第三方包导入那些事. 随着对python学习的渐入臻境,越来越多的小伙伴们开始导入自己所需的第三方包,实现各种各样的功能.但是,他 ...
- linux下 彻底修改python的包/模块导入路径
python模式下,有时候需要导入 import某些模块或者包.明明这个模块/包是存在的,却提示导入错误,比如,“ImportError: No module named lxml”. 但是当你在命 ...
- python基础===包的导入和__init__.py的介绍
转自:https://www.cnblogs.com/botoo/p/8241522.html 调用同级目录: – src |– mod.py |– test.py 若在程序test.py中导入模块m ...
- python导包
我们将完成特定功能的代码块放在一个.py结尾的文件中,这个文件被称为模块.在这个模块中可能包含变量,函数,类等等内容. 当我们从外部需要用到这个模块时,就需要将这个模块导入到我们当前环境.导入方式有以 ...
- python模块与包的导入
1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...
- python中的模块,以及包的导入的总结
模块导入的方式: 模块的概念:一个.py文件就称为一个模块 导入模块中函数的方式: 方式一:import 模块名 使用时:模块名.函数名() 方式二 :from 模块名 import 函数名 使用 ...
- python之模块、包的导入过程和开发规范
摘要:导入模块.导入包.编程规范 以My_module为例,My_module的代码如下: __all__ = ['name','read'] print('in mymodule') name = ...
- python基础(12)-包的导入&异常处理
包的导入 几种导入方式 import 包名 import time time.time() import 包名,包名 import time,sys time.time() sys.path from ...
随机推荐
- idea2018+maven+web新手maven指南
CSDN上的博主详细的很 https://blog.csdn.net/hncu1306602liuqiang/article/details/82356097
- ARP【地址解析协议】理解
今天是来公司的第二个周一,早上收到Boss抄送的邮件说网段之间无法通信,心想现在还不太懂这个原理,于是就在网络上搜罗了一下资料,作此整理(大部分文字内容来自网络) 1. 同网段和不同网段设备通信原理详 ...
- LINUX文件删除,但磁盘空间未释放
最近在进行系统压测,由于服务器节点太多,便写了个简单的脚本,在执行过程中发现,日志文件删除后,磁盘空间只释放了一小部分,任有大部分磁盘空间未释放. 使用lsof | grep delete命令,发现已 ...
- java Scanner中next和nextLine()区别
next(): 1.一定要读取到有效字符后才可以结束输入. 2.对输入有效字符之前遇到的空白,next() 方法会自动将其去掉. 3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符. ne ...
- redis hset hmset过期时间
hmset m k v > hset m k v (integer) > hget m k "v" > expire m (integer) > ttl m ...
- oracle-logminer
LogMiner工具实际上是由两个新的PL/SQL内建包((DBMS_LOGMNR 和 DBMS_ LOGMNR_D)和四个V$动态性能视图(视图是在利用过程DBMS_LOGMNR.START_LOG ...
- Keepalived+LVS实现高可用负载均衡双主模式
LVS是一种集群(Cluster)技术:采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一 ...
- EXCEL自动撤销合并单元格并填充相应内容(转帖)
若EXCEL工作表有很多合并的单元格,要将所有合并的单元格撤销,并填充撤销合并前显示的内容,这是一项很繁琐且容易出错的工作.但可通过宏程序可轻松准确地搞定,方法如下: 一.实现该功能的Excel宏程序 ...
- MySQL数据库中统计一个库中的所有表的行数?
今天公司两个远端的数据库主从同步有点问题,查看下wordpress库下所有表的表的条目? mysql> use information_schema;Database changedmysql& ...
- Android中是否推荐使用枚举Enum
一.Enum的产生 Java1.5中引入了枚举的语法,包括Enum,EnumSet,EnumMap等.其中Enum就是我们在C或C++中见过的枚举类型,但是Java中的枚举又比C或C++中的枚举更成熟 ...