学过python的小伙伴都知道,python有众多的第三方模块,正是这些共享模块的存在使得python变得愈加强悍。如何在python中构建发布自己的模块呢?
首先新建一个文件夹,如x99,里面放入__init__.py,setup.py,x99.py三个模块,
其中init空着,setup.py里面写入:
from distutils.core import setup setup( name=\'nineXnine\', version=\'1.1.1\', py_modules =[\'x99\'], #这个要跟发布的模块名一致 author=\'wangyi\', author_email=\'1375737725@qq.com\', url=\'http://www.cnblogs.com/wangyi0419\', description=\'这是我的第一个发布\' )
setup.py中各个字段的含义:
–name 包名称
–version (-V) 包版本
–author 程序的作者
–author_email 程序的作者的邮箱地址
–maintainer 维护者
–maintainer_email 维护者的邮箱地址
–url 程序的官网地址
–license 程序的授权信息
–description 程序的简单描述
–long_description 程序的详细描述
–platforms 程序适用的软件平台列表
–classifiers 程序的所属分类列表
–keywords 程序的关键字列表
–packages 需要处理的包目录(包含__init__.py的文件夹)
–py_modules 需要打包的python文件列表
–download_url 程序的下载地址
–cmdclass
–data_files 打包时需要打包的数据文件,如图片,配置文件等
–scripts 安装时需要执行的脚步列表
–package_dir 告诉setuptools哪些目录下的文件被映射到哪个源码包。一个例子:package_dir = {’’: ‘lib’},表示“root package”中的模块都在lib 目录中。
–requires 定义依赖哪些模块
–provides定义可以为哪些模块提供依赖
–find_packages() 对于简单工程来说,手动增加packages参数很容易,刚刚我们用到了这个函数,它默认在和setup.py同一目录下搜索各个含有 init.py的包。
其实我们可以将包统一放在一个src目录中,另外,这个包内可能还有aaa.txt文件和data数据文件夹。另外,也可以排除一些特定的包
find_packages(exclude=[".tests", ".tests.", "tests.", “tests”])
–install_requires = [“requests”] 需要安装的依赖包
选择性的写几个即可。
x99.py里面写入自己的代码:(打印九九乘法表)
class X99(object): def x99(self): print(\'\n\'.join([\' \'.join([\'%s*%s=%s \'%(j,i,j*i) if j==1 else \'%s*%s=%-2s \'%(j,i,j*i) for j in range(1,i+1)])for i in range(1,10)]))
然后在x99这个文件夹下面shift+右键打开命令行,依次输入如下三个命令:
1、构建
构建完成后会发现多了个文件夹: build/lib/x99.py
2、打包
打包完成后会发现多了个dist/nineXnine-1.1.1.tar.gz ,也就是我的setup.py中的包名和版本号,这个包就可以发布了。
3、安装
也可以安装自己的包
此时进入python交互模式试试:
此时在python的安装目录下\python3.7\Lib\site-packages中就能发现刚才安装的模块 x99.py。