python3之自定义包的发布

python3之自定义包的发布

  如果已经开发好了具备某些通用功能的模块包,恰好作者也是一个特别具有分享精神的开发人员,要将自己开发的python模块发布出来,提供给其他人进行操作使用,类似于我们使用pygame这样第三方模块一样,别人也可以通过命令直接安装使用,应该怎么操作?

文件目录结构
PlanWarsDemo
—>images
———>>图片文件
—>music
———>>音乐文件
—>1.py
—>init.py
—>data.py
—>game_engine.py
—>game_sprites.py
—>p.ico
—>setup.py
—>start.py

1. 本地发布

在我们已经开发好的一个包文件夹下,创建一个python模块:setup.py。模块中定义如下内容:

# 引入构建包信息的模块
from distutils.core import setup

# 定义发布的包文件的信息
setup(
name = "PlanWars_test01",  # 发布的包文件名称
version = "1.0",   # 发布的包的版本序号
description = "我的测试包",  # 发布包的描述信息
author = "llf",   # 发布包的作者信息
author_email = "2367746876@qq.com",  # 作者联系邮箱信息
py_modules = ['__init__','start', 'game_engine', 
'game_sprites', 'data']  # 发布的包中的模块文件列表
)

执行当前程序包文件的构建操作命令:按照标准格式组织包中的所有数据文件:
python setup.py build

REMARK:构建完毕的文件,可以通过python setup.py install命令直接当成第三方模块进行安装。用上面命令安装的模块,不能通过pip uninstall xx 进行卸载,只能进入对应的文件夹中手动删除文件即可。

执行命令进行包的打包发布:
python setup.py sdist

REMARK:打包的文件,主要是方便进行网络传输,打包之后会在当前目录下的dist中创建包含包中所有信息的tar.gz压缩包文件;该文件就可以通过git等方式提交给对应的开源组织发布你的自定义模块了!

2. 网络发布

  经历了前面一小节的操作之后,我们能不能让我们自己的包也类似于pip install这样的方式通过网络进行安装呢? 当然可以!当然前提条件是我们将自己的包发布到网络上!
  首先,进入http://pypi.python.org/pypi网站上,注册一个自己的账号吧!这个网站是目前大部分python第三方模块集中的一个管理社区平台。
  其次:你已经准备好你自己的python程序包,并在包中准备好了setup.py文件,在setup.py中,已经定义好了程序包的所有描述信息。

执行打包命令
python setup.py sdist

如果要包含静态文件,则要修改文件名为‘MANIFEST.in’的文件,如果没有创建该文件,选择性添加下面的参数再运行上面的命令即可。

CommandDescription
include pat1 pat2 …include all files matching any of the listed patterns(包括文件)
exclude pat1 pat2 …exclude all files matching any of the listed patterns(忽略文件)
recursive-include dir pat1 pat2 …include all files under dir matching any of the listed patterns(包括dir目录下的pat1…等文件)
recursive-exclude dir pat1 pat2 …exclude all files under dir matching any of the listed patterns(忽略dir目录下的pat1…等文件)
global-include pat1 pat2 …include all files anywhere in the source tree matching — & any of the listed patterns(全局包括)
global-exclude pat1 pat2 …exclude all files anywhere in the source tree matching — & any of the listed patterns(全局忽略)
prune direxclude all files under dir(忽略此文件夹)
graft dirinclude all files under dir(包含此文件夹下的所有文件)

我的MANIFEST.in文件内容如下:

include 1.py  # 1.py文件
graft ./images  # image目录下的所有图片文件
graft music  # music目录下的所有音乐文件

  接下来:将是激动人心的时刻!首先安装第三方模块:twine,用于上传我们打包的项目文件。
安装twine模块
pip install twine
上传项目
twine upload dist/*

发布成功后,其他人可以通过pip install xx的方式安装自己发布的模块。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值