Python中的包ImportError
#!/usr/bin/env python
#_*_ coding:utf-8 _*_
#encoding=utf-8
#function:
#created by xkq
#date: 2018
import sys,os
base_dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取pathtest的绝对路径
#os.path.abspath(__file__)#获取当前文件的绝对路径
#os.path.dirname(os.path.abspath(__file__))#获取当前文件所在目录的绝对路径
#print(sys.path)
sys.path.append(base_dir)#将pathtest的绝对路径加入到sys.path中
from backend.func import login
login.login()
导入子包中的模块
比如在Pack1_Module中导入SubPack1中的SubPack1_Module:
4、注意:写文件是要绝对路径,否则其他子模块调用文件是会报错如:FileNotFoundError: [Errno 2] No such file or directory: 'user.pickle'。可以用如下方法写绝对路径:
导入父包中的模块
导入父包中的模块,比如在Pack1.SubPack1中的SubPack1_Module.py调用Pack1中的Pack1_Module.py模块:
导入兄弟包中的模块
这部分其实和第三方包的导入类似,我们需要将兄弟包导入到sys.path中,比如在Pack2中调用Pack1:
首先,在Pack2中导入Pack1的包路径,在Pack2中的__init__.py中导入(pycharm好像不需要这一步,VS2013的工程需要,不过加上没有什么错):
其次在Pack2中的模块中调用Pack1,导入方式和Python自带包一样:
file=os.path.join(os.path.dirname(os.path.abspath(__file__)), 'user.pickle')#user.pickle的绝对路径
#file='user.pickle'
f=open(file,'rb')
user_all=pickle.load(f)
f.close()
总结
Python中的包导入我们只需要注意两点:一是导入的是不是包,二是导入的包路径是否能够被找到(sys.path或者本工程中),只要平时写程序的时候多注意,肯定可以避免很多麻烦。
欢迎大家关注我的博客:http://www.cnblogs.com/AlwinXu/
测试改进工场公众号:
导入本工程中的包
如在上图包结构中的RootMain.py中导入Pack1,Pack1.SubPack和Pack2中的模块:
其中Pack1中的__init__.py定义了__all__:
__all__威尼斯wns.9778官网活动,= ["SubPack1_Module"]
2、在main.py中调用login.py中的login函数:
实例
首先我创建了包含两个包的工程,目录结构如下:
下面我们来看一下包导入的各种情况:
1、目录结构如下图:
前言
Python中的包给我提供了很好的代码组织,相似的功能模块放在同一个包内,不仅代码结构清晰,而且调用起来也比较方便(可以用*导入)
但是,我们在刚开始使用Python包的时候总是会遇到导入错误"ImportError: No module named 'xxx'“,下面我们来简单介绍一下如何解决这类问题
本文由威尼斯wns.9778官网活动发布于计算机教程,转载请注明出处:Python中的包ImportError
关键词: