威尼斯wns.9778官网活动_vnsc威尼斯城官网

热门关键词: 威尼斯wns.9778官网活动,vnsc威尼斯城官网
当前位置:威尼斯wns.9778官网活动 > 计算机教程 > Python中的包ImportError

Python中的包ImportError

文章作者:计算机教程 上传时间:2019-05-10
#!/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:

威尼斯wns.9778官网活动 1

4、注意:写文件是要绝对路径,否则其他子模块调用文件是会报错如:FileNotFoundError: [Errno 2] No such file or directory: 'user.pickle'。可以用如下方法写绝对路径:

导入父包中的模块

导入父包中的模块,比如在Pack1.SubPack1中的SubPack1_Module.py调用Pack1中的Pack1_Module.py模块:

威尼斯wns.9778官网活动 2

威尼斯wns.9778官网活动 3

导入兄弟包中的模块

这部分其实和第三方包的导入类似,我们需要将兄弟包导入到sys.path中,比如在Pack2中调用Pack1:

首先,在Pack2中导入Pack1的包路径,在Pack2中的__init__.py中导入(pycharm好像不需要这一步,VS2013的工程需要,不过加上没有什么错):

威尼斯wns.9778官网活动 4

其次在Pack2中的模块中调用Pack1,导入方式和Python自带包一样:

威尼斯wns.9778官网活动 5

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/

测试改进工场公众号:

威尼斯wns.9778官网活动 6

 

 

导入本工程中的包

如在上图包结构中的RootMain.py中导入Pack1,Pack1.SubPack和Pack2中的模块:

;)

威尼斯wns.9778官网活动 7

;)

其中Pack1中的__init__.py定义了__all__:

__all__威尼斯wns.9778官网活动,= ["SubPack1_Module"]

2、在main.py中调用login.py中的login函数:

实例

首先我创建了包含两个包的工程,目录结构如下:

威尼斯wns.9778官网活动 8

下面我们来看一下包导入的各种情况:

1、目录结构如下图:

前言

Python中的包给我提供了很好的代码组织,相似的功能模块放在同一个包内,不仅代码结构清晰,而且调用起来也比较方便(可以用*导入)

但是,我们在刚开始使用Python包的时候总是会遇到导入错误"ImportError: No module named 'xxx'“,下面我们来简单介绍一下如何解决这类问题

本文由威尼斯wns.9778官网活动发布于计算机教程,转载请注明出处:Python中的包ImportError

关键词: