包package 的导入与被导入:
参考一下:
https://blog.csdn.net/guowujun321/article/details/80764468
1.文件目录:
|
|-- A/
| | __init__.py
| |A1.py
|
| B/
| |__init__.py
| |B1.py
|
| 测试A.py
问题1:在平行目录下的 测试A.py 想要导入A 包时,需要在 测试A.py 中写:
from A
import *
然后可以直接调用A包中的方法或者类(不需要写包名)
或者
import
A
A.ac()
a1=A.A_Class(
"
asd
")
问题2:A包的__init__文件应该怎样写,例如要导如A1.py文件中的Class:
import
os,sys
Path=os.path.dirname(os.path.abspath(
__file__
))
sys.path.append(Path)
from A1
import *
#
这一句是不可以用import A1这条语句的,因为在别的地方导入该A包的时候,会出错。(会出现未知命名错误),
至于前面的三行代码是为了把A1所在目录导入path中,,让系统可以找到。
问题3:当B包中的B1.py文件需要导入A包时,该怎么导入:
import
os,sys
Path=os.path.dirname(os.path.dirname(os.path.abspath(
__file__
)))
print
(Path) sys.path.append(Path)
from A
import *
a1=A_Class(
"
张三
"
) 我创建的A包中有一个类A_Class.当需要导入A包时,需要把A包的父目录添加到path中让系统可以找到。
★
①采用from...import方式
from 包 绝对路径 from 模块py文件
from package.subpackage1 import foo1
from 模块 import 变量
from 包 import 子包
②采用import方式
import package.subpackage1
import 模块
总结:import和from 2个关键字后面 都可以是模块或者包
本测试代码链接:https://github.com/Anxc520/test1.git