python语言基础-自定义模块的发布打包及安装

前言

不知道大家有没有注意到,当我们自己定义一个模块,然后想在另外一个模块导入这个自定义模块时,那么这两个模块必须要在同一个项目中或者是同一个路径下,这样才能导入,否则就会报模块未定义的错误。然而当我们在使用系统自带的模块比如os或是已安装的第三方库(requests)时,不管是在哪里都可以直接导入使用,而不用关心是否是同一个项目或相同的路径下。这是为什么呢,那么如果我们自定义了一个功能通用的模块,想在多个不同的项目中都能使用,是否能像系统自带的那样可以在任意位置使用呢?

模块的构建

假如现在我们整理了一套连接不同数据库操作的功能模块,并且想把这些模块应用到各个不同的项目中,最笨的办法就是在每个项目中把这些模块都复制一份然后在使用,显然这不是最好的办法。下面来介绍另外一个简洁的办法,就是把我们写好的模块进行一个发布,打包和安装,这样就可以直接导入使用了。下面就来简单的说一下模块的发布步骤

1. 数据库操作服务的目录结构如下:

.
|--dbserver
       |--sqlserver_help.py
       |--mysql_help.py
       |--oracle_help.py
       |--__init__.py

2. 在dbserver的同级目录下新建setup.py文件,并添加如下代码:

from distutils.core import setup

setup(name='dbserverhelper',version='1.0',description='database server helper',autor='Alvin',py_modules=['dbserver.sqlserver_help','dbserver.mysql_help','dbserver.oracle_help'])

setup函数的参数说明:

name:模块发布后的名称,可以随便定义

version:模块发布后的版本

description:模块的描述信息

author:模块的作者

py_modules:这个参数是一个列表类型,要进行打包发布的这个模块需要包含哪些py文件,即要将哪些模块进行打包发布。格式是包名.模块名,不带后缀

3. 构建模块

打开命令行切换到setup.py所在目录,执行如下语句

python setup.py build

#这里需要注意的是所要构建的目录下一定要包含__init__.py文件,也就是说要打包的目录必须是一个python的包,否则无法进行构建。

构建后的目录结构:

.
|--build
|    |--lib
|    |    |--dbserver
|    |    |    |--sqlserver_help.py
|    |    |    |--mysql_help.py
|    |    |    |--oracle_help.py
|    |    |    |--__init__.py
|
|--dbserver
|      |--sqlserver_help.py
|      |--mysql_help.py
|      |--oracle_help.py
|      |--__init__.py
|
|--setup.py

4. 生成发布压缩包
同样在setup.py的同级目录下执行如下语句:

python setup.py sdist

执行完成后会生成一个压缩包:dbserverhelp-1.0.tar.gz。最新目录结构如下:

.
|--build
|    |--lib
|    |    |--dbserver
|    |    |    |--sqlserver_help.py
|    |    |    |--mysql_help.py
|    |    |    |--oracle_help.py
|    |    |    |--__init__.py
|--dist
|    |-dbserverhelp-1.0.tar.gz
|
|--MANIFEST
|
|--dbserver
|      |--sqlserver_help.py
|      |--mysql_help.py
|      |--oracle_help.py
|      |--__init__.py
|
|--setup.py

以上4步完成后就完成了自定义模块的构建及打包了。

模块的安装

接下来就可以安装我们的模块了,首先找到上面步骤中生成的dbserverhelp-1.0.tar.gz压缩包并解压到任意位置,然后进入到解药后的文件夹打开cmd执行如下命令:

python setup.py install

#注意:如果在install的时候需要指定安装目录,可以使用:
python setup.py install --prefix=安装路径

模块的导入

前面已经介绍过几种模块的导入方式,这里自定义的模块也是一样,可以通过import xxx导入或通过from xxx import xxx的方式导入。

这样就可以实现自定义模块的打包安装及使用了。

猜你喜欢

转载自blog.csdn.net/lixiaosenlin/article/details/91448291