python导包显示No module named XXX问题
最近用sublime text写python脚本,在导包是一直显示No module named XXX。
问题描述:
首先文件夹的目录结构如下:

count.py文件,代码如下:
#coding=utf-8 def add(a=3,b=8):
return a+b if __name__ == '__main__':
print add()
counttest.py文件,代码如下:
#coding=utf-8 from model import count c=add(4,6) print c
运行之后,显示的结果是:
理论上讲,从model导入count.py文件,是对的,到底哪里出错了?
三种解决方案:
(1)在model目录下新建__init__.py文件,内容为空,在counttest.py文件中更改如下:c=count.add(4,6)
运行结果如下:

(2)在__init__.py文件写入:
import count
在counttest.py文件更改为:
#coding=utf-8 from model import * #这一行做了更改 c=count.add(4,6) print c
运行结果如下:

(3)在__init__文件中,更改为:
#coding=utf-8
__all__ = ['count'] #count为需要导入的文件
运行结果如下:

原理:
原来在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。当你将一个包作为模块导入(比如从 xml导入 dom )的时候,实际上导入了它的 __init__.py 文件。
一个包是一个带有特殊文件 __init__.py 的目录。__init__.py 文件定义了包的属性和方法。其实它可以什么也不定义;可以只是一个空文件,但是必须存在。如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。
_init__.py 文件:
__init__.py 控制着包的导入行为。假如 __init__.py 为空,那么仅仅导入包是什么都做不了的。
>>> import Package1
>>> Package1.Module1
Traceback (most recent call last):
File "D:/Work Space/Python practice/MyPractice/src/test.py", line 8, in <module>
aa=Package1.Module1
AttributeError: 'module' object has no attribute 'Module1'
我们需要在 __init__.py 里把 Module1 预先导入:
#文件 __init__.py
import Module1
测试:
>>> import Package1
>>> aa=Package1.Module1
>>> print aa
__init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:
from PackageName import *
这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:
#文件 __init__.py
__all__ = ["Module1", "Module2", "subPackage1", "subPackage2"]
测试:
>>> from Package1 import *
>>>
test1111111111111111111111
test222222
__init__.py 文件会在导入时被执行。
python的引外机制:
import abc
1、首先在当前目录下找有没有abc、abc.py
2、找python的安装目录:F:\Python2.7Exe\Lib\site-packages;F:\Python2.7Exe\Lib;
3、找电脑中path下面的目录
python导包显示No module named XXX问题的更多相关文章
- linux/cmd中python路径导入ModuleNotFoundError: No module named 'xxx'
在linux或者直接在cmd中运行python文件时 会遇到导包错误的情况ModuleNotFoundError: No module named 'xxx’由于不在pycharm中 所以这里不能将上 ...
- python3:cmd运行python脚本,提示 No module named 'xxx'
问题:cmd窗口运行python脚本,报错 C:\Users\xxx\Documents\GitHub\python3\main>python run_test.pyTraceback (mos ...
- mac crontab调用python时出现ImportError: No module named XXX的问题
写了一个监控mq的脚本,把这个脚本加入crontab里进行时刻监控,于是#crontab -e,添加语句: * * * * * cd /目录 && python mq脚本名.py &g ...
- python和sudo python 出现no module named XXX
今天使用python执行文件,然而显示权限不够, 但是加上sudo之后,又会显示no module named XXX 问题在于两者python路径中包含的库不同.解决方法: 分别进入两个python ...
- python模块以及导入出现ImportError: No module named 'xxx'问题
python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用如果你要使 ...
- 命令行执行python模块时提示ImportError: No module named xxx
在pycharm中运行python文件没有问题,切换到cmd中是提示:ImportError: No module named xxx 原因: pycharm在运行时会把当前工程的所有文件夹路径都作为 ...
- python cmd 启动python项目报错:no module named “xxx”
场景:使用pycharm编辑器启动pyhon项目时可以启动,但使用cmd启动时,会报:no module named “xxx”的错误,此时,有两种情况: 1.no module named “xxx ...
- python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法
在ide中执行python程序,都已经在默认的项目路径中,所以直接执行是没有问题的.但是在cmd中执行程序,所在路径是python的搜索路径,如果涉及到import引用就会报类似ImportError ...
- 安装pytorch后import torch显示no module named 'torch'
问题描述:在pycharm终端里通过pip指令安装pytorch,显示成功安装但是python程序和终端都无法使用pytorch,显示no module named 'torch'. 起因:电脑里有多 ...
随机推荐
- 对于session,request,cookie的理解
session和request的生命周期 首先是session,比如我们在实现一个购物车功能时,在某一页面(这里称为页面A)选择了一些购物的商品,添加到购物车.那么当我们选择完成后点击我的购物车时会跳 ...
- unity Texture贴图纹理及相关属性
Texture资源是Unity3d游戏开发中用途最广泛的资源之一,被引用于诸如界面UI. Mesh模型 .粒子效果等.还有一些特殊的Texture资源,如:Movie Texture:视频资源.Ren ...
- # 20155327 2016-2017-3 《Java程序设计》第5周学习总结
20155327 2016-2017-3 <Java程序设计>第5周学习总结 教材学习内容总结 理解异常架构 粉红色的是受检查的异常(checked exceptions),其必须被 tr ...
- python之路----面向对象进阶一
一.isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() i ...
- Java系列笔记(5) - 线程
我想关注这个系列博客的粉丝们都应该已经发现了,我一定是个懒虫,在这里向大家道歉了.这个系列的博客是在我工作之余写的,经常几天才写一小节,不过本着宁缺毋滥的精神,所有写的东西都是比较精炼的.这篇文章是本 ...
- 从Oracle到MySQL,余额宝云实践分享
原文链接:http://www.csdn.net/article/2013-11-/2817426-interview-financial-case-yuerbao-aliyun07 余额宝.百度百发 ...
- 20165211 2017-2018-2 《Java程序设计》第3周学习总结
20165211 2017-2018-2 <Java程序设计>第3周学习总结 教材学习内容总结 本周,我学习了书本上第四章的内容,以下是我整理的主要知识. 第四章 类与对象 编程语言的几个 ...
- 自定义LisetView
1.ListView listview=findViewById(R.id.listview); 2.public class MyAdapter extends BaseAdapter{ priva ...
- BZOJ 1063 道路设计(树形DP)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1063 题意:给出一个无环图( 也就是树,但是也有可能是森林),代表一个国家的城市.1是首 ...
- android 通过webview调起支付宝app支付
网站学习:http://blog.csdn.net/zhuyu19911016520/article/details/71763900