包用于将一组模块归并到一个目录中,此目录即为包,目录名即为包名。
包是一个有层次的文件目录,它定义了一个由模块和子包组成的Python应用程序执行环境。基于包,Python在执行 模块导入时可以指定模块的导入路径
import dir1.dir2.mod1
包导入语句的路径内每个目录内必须有__init__.py 文件。 __init__.py可包含Python代码,但是通常为空,仅拥有扮演包初始化的挂钩,替目录产生模块名称空间已经使用目录导入时实现 from * 行为的角色。
一个模块文件可以同时支持顶层执行(作为顶层文件)或被导入(作为模块文件)。每个模块都有个名为__name__的内置属性,Python会自动设置该属性。如果文件是以顶层程序文件执行,在启动时,__name__的值为“__main__"。 如果被导入,则__name__的值为模块名。
可以在模块文件中检测自己的__name__属性,以致实现在执行时运行指定代码,常用于模块的自我测试。
if __name__ == "__main__":
testFunc()。。。。。。。
发布Python模块或程序
压缩文件:使用distutils Windows的zip文件和类Unix平台的.tar.gz文件(源码)
自动解包或自动安装可执行文件:Windows的.exe文件
自包含的,不要求安装的预备运行科执行程序: Windows的.exe文件,Unix上带有一个小的脚本前缀的ZIP压缩文件、Mac上的.app等
平台相关的安装程序:Windows的.msi文件,Linux常见的.rpm src.rpm .deb文件等
Python eggs 较流行的第三方扩展。
distutils模块能够帮助完成模块或程序的发布
发布是指一个文件集合,这些文件联合在一起可以使用distutils构建、打包和发布模块。创建好的发布可以用于安装,也可上传到PyPI与他人共享。
创建发布:将各代码文件组织到模块容器中-----准备一个TEADME或README.TXT文件----而后在容器中创建setup.py文件。
py_modules 各模块名称组成的列表,这些模块可能位于包的根目录下(modname), 也可能位于某子包目录中(subpkg1.modname)
platforms 平台列表
license 许可证
packages 各子包名称的列表
python setup.py sdist 在要发布的目录中执行此命令即可完成打包 --formats=
可以sdist指定格式:
zip---zip gztar--tar.gz bztar----tar.bz2 ztar---tar.Z tar----tar
setup.py bdist 二进制发行版--安装包 --formats=
gztar--tar.gz ztar---tar.Z tar---tar zip---zip rpm---RPM Package
pkgtool---Solaris pkgtool wininst---Windows上自解压的zip格式包
msi---Microsoft Installer
bdist_dump:
bdist_rpm:
bdist_wininst:
bdist_msi:
获取帮助 python setup.py --help
python setup.py --help-commands 所有可使用命令
python setup.py COMMAND --help 特定命令帮助
python setup.py --help-formats 可用格式
rpm -qpi dist/pkg1-0.1-1.noarch.rpm
pip, easy_install 的使用
安装包:
python setup.py install
两个过程: build && install:
python setup build 目录生成在当前目录
--build-base=/path/to/build_dir
lib(纯python编译好的文件),lib.platform(无法实现跨平台的编译好的 文件) 两个目录保存即将安装的模块文件
第三方模块默认的安装路径通常为 :site-packages
/usr/lib/python2.7/site-packages
自定义安装路径:
普通用户:
--user= 普通用户将模块安装至自己家目录下的某些特定目录
对于公共目录有些权限的:
--prefix= 安装在自己所定义的别的目录中
--exec-prefix= 用于指定跟平台相关的已经编译好的文件的安装路径
深度定制:
--install-purelib=/path/to/python_lib
--install-platlib=/path/to/plat_lib
--install-lib=/path/to/lib
--install-scripts=/path/to/bin 可执行文件的安装路径
--install-data= 数据文件
--install-headers= C代码