[超详细] 手把手带你发布自己的专属模块!

640

640

本文字数:4321 字

阅读本文大概需要:7 分钟

00.写在之前

我们在写代码的时候,有时会开发出一个让自己觉得牛x闪闪的模块,自我陶醉已经满足不了自己蠢蠢欲动的心,只想赶紧让更多的人知道,毕竟分享是一种优秀的品德(实际是为了享受一波彩虹屁。

那么该如何发布这个模块呢?这就是接下来我要分享的内容。

01.模块 -> 压缩包

我们要将模块制作成压缩包,这里一共有 3 个步骤:

  1. 创建 setup.py;

  2. 构建模块;

  3. 生成发布压缩包。

创建 setup.py,具体内容如下所示:

from distutils.core import setup

setup(
        name='rocky_module', # 包名
        version='1.0', # 版本
        py_modules=['rocky_module.add','rocky_module.delete'],
        author='rocky0429', # 作者
        author_email='xxxxx@xxx.com', # 作者邮箱
        url='https://rocky0429.blog.csdn.net/', # 主页
        descriptioin='增加和删除模块', # 描述信息
        long_description='完整的增加和删除模块' # 完整的描述信息
)

上述的字典参数只是其中的一部分,关于详细信息可以参考官方网站:

https://docs.python.org/3/distutils/apiref.html

setup.py 创建完成以后,我们可以在解释器中输入下面的代码来「构建模块」:

python3 setup.py build

回车以后会出现如下的提示信息:

running build
running build_py
creating build
creating build/lib
creating build/lib/rocky_module
copying rocky_module/__init__.py -> build/lib/rocky_module
copying rocky_module/add.py -> build/lib/rocky_module
copying rocky_module/delete.py -> build/lib/rocky_module

你会发现在当前目录下多了个 build 目录,build 下有个 lib,lib 下有个 rocky_module 目录:

640?wx_fmt=png

这就是使用 Python 解释器,在执行 setup.py 时跟上 build 这个参数产生的结果,build 目录下所有的文件就是我们最终打包的压缩包里面包含的文件。

最后一步就是生成「发布压缩包」:

python3 setup.py sdist

同样回车以后会产生一些提示信息:

running sdist
running check
warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)

warning: sdist: standard file not found: should have one of README, README.txt

writing manifest file 'MANIFEST'
creating rocky_module-1.0
creating rocky_module-1.0/rocky_module
making hard links in rocky_module-1.0...
hard linking setup.py -> rocky_module-1.0
hard linking rocky_module/__init__.py -> rocky_module-1.0/rocky_module
hard linking rocky_module/add.py -> rocky_module-1.0/rocky_module
hard linking rocky_module/delete.py -> rocky_module-1.0/rocky_module
creating dist
Creating tar archive
removing 'rocky_module-1.0' (and everything under it)

这时你会发现当前目录下又多了一个 dist 的目录,同时在这个目录下又多个了 .tar.gz 的压缩文件:

640?wx_fmt=png

至此,我们的模块已经被打包成了一个压缩包,如果我们想要分享,就可以把这个压缩包发送给你想发送的人即可。

02.安装模块压缩包

当其他人拿到我们分享的模块压缩包以后,怎样把我们的模块安装到他自己的开发环境中呢?

其实很简单,只需要两步即可:

第一步:用 tar 把我们的压缩包做一个解压:

tar zxvf rocky_module-1.0.tar.gz

回车以后提示信息如下所示:

x rocky_module-1.0/
x rocky_module-1.0/PKG-INFO
x rocky_module-1.0/rocky_module/
x rocky_module-1.0/rocky_module/delete.py
x rocky_module-1.0/rocky_module/add.py
x rocky_module-1.0/rocky_module/__init__.py
x rocky_module-1.0/setup.py

此时在当前目录下,会产生一个 rocky_module-1.0 的目录,进入到该目录,里面存在如下内容:

640?wx_fmt=png

一个是 rocky_module 的目录,一个是我们熟悉的 setup.py,还有一个是 PKG-INFO,它是什么呢?我们用 cat PKG-INFO 看一下,里面的内容如下所示:

640?wx_fmt=png

有没有很熟悉呢?对啦,这就是我们在文章刚开始时给 setup 函数传递的参数。这个文件的好处是什么呢?就是当其他人拿到我们开发的模块时,能够很清楚的知道模块的开发者是谁,怎么才能联系到开发者。

压缩包成功的解压以后,紧接着就是安装这个模块。

第二步:使用 sudo 让 Python解释器以 root 的身份执行 setup.py

sudo python3 setup.py install

同样回车以后会产生提示信息:

running install
running build
running build_py
creating build
creating build/lib
creating build/lib/rocky_module
copying rocky_module/__init__.py -> build/lib/rocky_module
copying rocky_module/add.py -> build/lib/rocky_module
copying rocky_module/delete.py -> build/lib/rocky_module
running install_lib
creating /Users/rocky/PycharmProjects/module/venv/lib/python3.6/site-packages/rocky_module
copying build/lib/rocky_module/delete.py -> /Users/rocky/PycharmProjects/module/venv/lib/python3.6/site-packages/rocky_module
copying build/lib/rocky_module/add.py -> /Users/rocky/PycharmProjects/module/venv/lib/python3.6/site-packages/rocky_module
copying build/lib/rocky_module/__init__.py -> /Users/rocky/PycharmProjects/module/venv/lib/python3.6/site-packages/rocky_module
byte-compiling /Users/rocky/PycharmProjects/module/venv/lib/python3.6/site-packages/rocky_module/delete.py to delete.cpython-36.pyc
byte-compiling /Users/rocky/PycharmProjects/module/venv/lib/python3.6/site-packages/rocky_module/add.py to add.cpython-36.pyc
byte-compiling /Users/rocky/PycharmProjects/module/venv/lib/python3.6/site-packages/rocky_module/__init__.py to __init__.cpython-36.pyc
running install_egg_info
Writing /Users/rocky/PycharmProjects/module/venv/lib/python3.6/site-packages/rocky_module-1.0-py3.6.egg-info

这个时候,整个模块已经被成功的安装到 Python 的系统目录(详见上述提示信息的最后一行)。

口说无凭,我们来验证一下,在终端中进入 ipython,然后导入该模块,如果没有报错,就证明安装成功:

640?wx_fmt=png

03.卸载模块

能安装就得能卸载,模块安装成功以后,如果我们不想再用了,怎么把这个模块从我们的系统中删除呢?

很简单,同样只需要两步:

第一步:直接进入到安装目录(也就是系统目录)。但是这有一个麻烦点,那就是安装目录很长,一段时间以后并记不得在哪?下面我教大家一个方法能够快速的找到安装目录:

首先我们进入ipython 的交互解释器中,导入该模块,每个模块其实都自带一个内置属性 __file__,这个就可以查看模块的完整路径:

640?wx_fmt=png

所以进入安装目录就是如下所示:

cd /Users/rocky/PycharmProjects/module/venv/lib/python3.6/site-packages/

接下来就是执行删除操作:

sudo rm -r rocky_module*

PS:rocky_module* 是删除以 rocky_module 为开头的所以文件。

现在我们再在 ipython 中验证一下是否删除成功:

640?wx_fmt=png

导入模块报错,证明我们删除成功。

640?wx_fmt=gif

无处不在的「单例设计模式」

我们都知道的「字典」,到底可以用来做什么?

曾经,我被这些陷阱坑的找不着北...

直到面试被问到什么是「共享引用」,我才发现对于它的一无所知...

640?wx_fmt=jpeg

?扫描上方二维码即可关注

发布了608 篇原创文章 · 获赞 5913 · 访问量 88万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 酷酷鲨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览