今天犯了一个很蠢的错误,有关python的模块包的使用的
2011-06-16 15:11
961 查看
在引用自己构造模块包时,总是不成功
from XXXLib.Pub import *
dumpString("XXXX......")
总是报:NameError: name 'dumpString' is not defined
后来才想到是没有引用到具体的模块:
from XXXLib.Pub.shareDef import *
dumpString("XXXX......")
借此机会再来回顾一下如何构造自己的模块包:
首先创建一个Package(我用的是Eclipse IDE)
然后再创建子包,记得用Package.SubPackage的方式命名
然后再创建子包里的Python模块,就是一个个py文件
在每个包的下面创建一个空的__init__.py文件,表示该目录为python的包
然后就可以在别的py文件中引用包中的函数了,引用方式是
from Package.SubPackage.Module import *
==================================
Python模块包中__init__.py文件的作用
http://hi.baidu.com/nkhzj/blog/item/a6f0df00b2c39716728b65f1.html
模块包:
包通常总是一个目录,目录下为首的一个文件便是 __init__.py。然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。差不多就像这样吧:
我们可以就这样导入一个包:
或者调入一个子模块和子包:
可以深入好几层包结构:
大致就这样吧,我觉得,包的精髓应该是在 __init__.py 这个文件之中的。
__init__.py 文件:
__init__.py 控制着包的导入行为。假如 __init__.py 为空,那么仅仅导入包是什么都做不了的。
我们需要在 __init__.py 里把 Module1 预先导入:
测试:
__init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:
这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:
测试:
__init__.py 文件会在导入时被执行。
本文出自 “安道云的技术博客” 博客,请务必保留此出处http://andoring.blog.51cto.com/1718583/589935
from XXXLib.Pub import *
dumpString("XXXX......")
总是报:NameError: name 'dumpString' is not defined
后来才想到是没有引用到具体的模块:
from XXXLib.Pub.shareDef import *
dumpString("XXXX......")
借此机会再来回顾一下如何构造自己的模块包:
首先创建一个Package(我用的是Eclipse IDE)
然后再创建子包,记得用Package.SubPackage的方式命名
然后再创建子包里的Python模块,就是一个个py文件
在每个包的下面创建一个空的__init__.py文件,表示该目录为python的包
然后就可以在别的py文件中引用包中的函数了,引用方式是
from Package.SubPackage.Module import *
==================================
Python模块包中__init__.py文件的作用
http://hi.baidu.com/nkhzj/blog/item/a6f0df00b2c39716728b65f1.html
模块包:
包通常总是一个目录,目录下为首的一个文件便是 __init__.py。然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。差不多就像这样吧:
Package1/ __init__.py Module1.py Module2.py Package2/ __init__.py Module1.py Module2.py
我们可以就这样导入一个包:
import Package1
或者调入一个子模块和子包:
from Package1 import Module1 from Package1 import Package2 import Packag1.Module1 import Packag1.Package2
可以深入好几层包结构:
from Package1.Package2 import Module1 import Package1.Package2.Module1
大致就这样吧,我觉得,包的精髓应该是在 __init__.py 这个文件之中的。
__init__.py 文件:
__init__.py 控制着包的导入行为。假如 __init__.py 为空,那么仅仅导入包是什么都做不了的。
>>> import Package1 >>> Package1.Module1 Traceback (most recent call last): File "<pyshell#1>", line 1, in ? Package1.Module1 AttributeError: 'module' object has no attribute 'Module1'
我们需要在 __init__.py 里把 Module1 预先导入:
#文件 __init__.py import Module1
测试:
>>> import Package1 >>> Package1.Module1 <module 'Package1.Module1' from 'Module.pyc'>
__init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:
from PackageName import *
这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:
#文件 __init__.py __all__ = ['Module1', 'Module2', 'Package2']
测试:
>>> from Package1 import * >>> Module2 <module 'Package1.Module2' from 'Module.pyc'>
__init__.py 文件会在导入时被执行。
本文出自 “安道云的技术博客” 博客,请务必保留此出处http://andoring.blog.51cto.com/1718583/589935
相关文章推荐
- 今天犯了一个很蠢的错误,有关python的模块包的使用的
- 今天使用VS2012遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"
- 今天使用VS2015遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"
- 今天使用VS2012遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"
- 今天使用VS2012遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"
- python中有关类的一个错误
- ubuntu下使用pip3.6安装模块总是报ssl module in Python is not available的错误
- python2.7 使用MySQLdb模块封装一个获取mysql连接的类案例
- Python3.6使用logger模块,2次print,重定向,输出信息到指定文件,使用traceback模块重定向错误输出
- 【Python】使用cmd模块构造一个带有后台线程的交互命令行界面
- python使用pip安装模块的时候出现ascii错误
- ubuntu在使用pip安装python模块时的狗血错误
- 使用python hdfs模块操作hadoop hdfs的一个坑
- 今天使用babel遇到的一个错误
- 目前大家对Python都有一个共识,就是他对测试非常有用,自动化测试里Python用途也很广,但是Python到底怎么进行自动化测试呢?今天就简单的向大家介绍一下怎么使用Python进行自动化测试
- Python中与字符编码方式有关的一个错误
- 使用 Python 的 Socket 模块构建一个 UDP 扫描工具
- 创建ROS工作空间使用catkin_make时出现和python编译器有关的编译错误
- 解决Python下使用pip安装Builtwith模块字符解析错误
- python-nmap模块的使用及制作一个简单的端口扫描器