位置: 编程技术 - 正文

打包发布Python模块的方法详解(python项目打包发布)

编辑:rootadmin

推荐整理分享打包发布Python模块的方法详解(python项目打包发布),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python打包模块,python3打包,python 程序打包发布,python打包模块,python打包模块,python3打包,python打包模块,python打包egg,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

昨天把自己的VASP文件处理库进行了打包并上传到PyPI,现在可以直接通过pip和easy_install来安装VASPy啦(同时欢迎使用VASP做计算化学的童鞋们加星和参与进来),

VASPy的GotHub地址: 后面的内容都是以此为例进行说明:

打包和安装第三方包的工具

这里我们需要借助setuptools和pip等工具进行自己包的打包和发布以及安装,如果需要构建成wheel还需要安装wheel模块。如果python版本>=2.7.9或者>=3.4,setuptools和pip是已经安装好的,可能需要进行更新到最新版本

pip install -U pip setuptools

可以使用包管理工具,例如

通过get-pip.py脚本安装,如果检测到没有安装wheel和setuptools也会自动安装

python get-pip.py

具体的工具安装和介绍就不多讲了,可以请参考requirements for installing packages

包中不同文件的作用

setup.py

这个文件是打包整个项目最重要的文件,它里面提供了两个主要的功能:

setup()函数,此函数的参数指定了如何配置自己的项目。命令行工具,包括打包,测试,发布等。可以通过下面的命令查看;

python setup.py --help-commands

setup.cfg

此文件包含了构建时候的一些默认参数例如构建bdist_wheel的时候的--universal参数

这样每次打包的时候就会默认使用--universal参数了,效果类似:

python setup.py bdist_wheel --universal

README.rst

这个最初我是用markdown写的,打包发布到PyPI之后发现PyPI不支持markdown的渲染,页面上真是一片混乱,于是就用reStrutruedText的语法重新写了一遍。毕竟标记语言语法基本上可以秒上手,实在不行找个模板比葫芦画瓢就行。reStructureText的语法规则可参考官方文档:Quick reStructuredText

其实还有一种方法就是使用pandoc将markdown转换成rst格式,一种省事的方式就是使用pyandoc模块在发布的时候自动转换。具体方法可以参考:Use Markdown README's in Python modules

MANIFEST.in

此文件在打包的时候告诉setuptools还需要额外打包那些文件,例如我VASPy中的单元测试的测试数据文件我就使用这个文件将其包含进来。当然README,LICENSE这些也可以通过它来一起打包进来。下面是我自己的MANIFEST.in的内容:

具体的语法规则可以参考:The MANIFEST.in template

vaspy/

此文件夹就是vaspy源代码所在的包。

tests/

此文件夹也是一个子包,包含了单元测试脚本,为了能使用python setup.py test进行单元测试,特地添加了__init__.pys使其成为一个包。

setup()的参数

这里只介绍我使用的几个参数,其他参数的具体使用可以参考: = "vaspy"

打包发布Python模块的方法详解(python项目打包发布)

是整个项目的名字,打包后会使用此名字和版本号。

version

description

是一个简短的对项目的描述,一般一句话就好,会显示在pypi上名字下端。

long_description

是一个长的描述,相当于对项目的一个简洁,如果此字符串是rst格式的,PyPI会自动渲染成HTML显示。这里可以直接读取README.rst中的内容。

url

包的连接,通常为GitHub上的链接或者readthedocs的链接。

packages

需要包含的子包列表,setuptools提供了find_packages()帮助我们在根路径下寻找包,这个函数distutil是没有的。

setup_requires

这个参数定义了VASPy安装和顺利运行所需要的其他依赖项(最基本的),使用pip安装的时候会对这些依赖项进行安装。关于这个参数与requirements.txt的区别可以参考:install_requires vs Requirements files

classifier

这个参数提供了一系列的分类,在PyPI上会将其放入不同的目录中讲项目进行归类。具体的categories的名称和规则参考: setup.py test

来跑单元测试,再也不需要单独再写一个脚本例如run_tests.py这样来跑单元测试了。此参数的官方解释:

A string naming a unittest.TestCase subclass (or a package or module containing one or more of them, or a method of such a subclass), or naming a function that can be called with no arguments and returns a unittest.TestSuite. If the named suite is a module, and the module has an additional_tests() function, it is called and the results are added to the tests to be run. If the named suite is a package, any submodules and subpackages are recursively added to the overall test suite.

也就是说这个参数可以接受多种类型的参数:

接收unittest.TestCase子类,我们可以讲所有单元测试写入一个测试用例中,然后import进来,再传你给test_suite接收函数对象,此函数对象没有任何参数,且返回一个unittest.TestSuite.这样我们就可以单独写一个函数,将多个测试用例合并成一个suite然后返回,然后再将函数import进来传给test_suite。

模块和包名称,我就是使用这种方式,之前自己的测试都是分开的多个脚本,这样我添加一个__init__.py就可以将其变成一个包,将包名传给test_suite,setuptools就会神奇的将此包下的所有测试全部跑一边,这样我以后再加测试脚本的时候直接就添加新的脚本就好了,其他的都不需要改动了。

运行效果:

发布自己的python包

1. 首先先去PyPI注册帐号

2. 配置~/.pypirc如下:

3. 然后注册并上传自己的包到测试服务器

pypi提供了一个测试服务器,我们可以在这个测试服务器上做测试。

python setup.py register -r pypitest

然后

python setup.py sdist upload -r pypitest

若没有问题我们应该不会得到任何错误。

4. 上传至PyPI

若上面的测试成功,我们就可以按照相同的步骤将包注册并上传。

Ok,之后我们就可以在PyPI(

基于Python 的进程管理工具supervisor使用指南 Supervisor是基于Python的进程管理工具,只能运行在Unix-Like的系统上,也就是无法运行在Windows上。Supervisor官方版目前只能运行在Python2.4以上版本,但是还

Python自动化运维和部署项目工具Fabric使用实例 Fabric是使用Python开发的一个自动化运维和部署项目的一个好工具,可以通过SSH的方式与远程服务器进行自动化交互,例如将本地文件传到服务器,在服

python解决Fedora解压zip时中文乱码的方法 前言很多时候在windows下压缩文件没问题,但是到了Linux下,出现乱码,很常见。以前在Ubuntu下,用`unzip-OGBKfilename.zip`就可以搞定。换了Fedora后,暂时没

标签: python项目打包发布

本文链接地址:https://www.jiuchutong.com/biancheng/385356.html 转载请保留说明!

上一篇:在python的类中动态添加属性与生成对象(python类怎么用)

下一篇:基于Python 的进程管理工具supervisor使用指南(基于python的研究)

  • 企业所得税年度汇算
  • 企业出售土地的土地增值税计算方法
  • 小规模纳税人所得税怎么征收
  • 无形资产价值评估收费
  • 利息收入为什么记贷方
  • 建筑行业分包款要分项目扣除吗
  • 建筑企业收到招聘短信
  • 企业进项发票不够销项开的多
  • 税务记账保存多少年纳税人转小规模
  • 商铺售后回租会计处理
  • 在建工程转固定资产凭证附件
  • 公司偷税漏税是当事人责任大还是法人责任大
  • 公司租赁的车辆发生的费用都可以报销吗?
  • 电子设备折旧率一般多少
  • 公户转到法人账户怎么做账
  • 老板请员工吃饭唯独没叫你是什么意思
  • 进项税额有哪些明细科目
  • 税务返还手续费发放给个人需要合并扣税吗
  • 个人设备租赁给公司怎么提供发票
  • 税控盘锁死还能报税吗
  • 科技型中小企业享受优惠税收政策2023
  • 哪些情况下工资不低于最低工资标准的80
  • 免税项目进项税为什么不可以抵扣
  • 所得税费用一年交几次
  • 预收房款属于什么科目
  • 出口运保佣账务处理
  • 免税进口种子要符合哪些条件?
  • 企业买的商业保险退款怎么做账
  • 收购免税农产品的进项税可以抵扣吗
  • 开发阶段包括
  • 国家基建项目规划
  • linux |bc
  • 操作系统不同
  • 增值税专用发票和普通发票的区别
  • 设置系统自动更新一般通过什么窗口
  • 固定资产的财务处理方法
  • 下载的压缩文件打不开
  • 电脑打开文件夹选项
  • 职工医疗保险补交6万与交居民每交300哪个合算?
  • 分配利润的会计科目
  • 跨国并购融资问题
  • 房产置换流程及费用
  • php获取访问用户的ip
  • 印刷厂成本核算
  • ssm框架集成
  • arc架构
  • 当年实现的利润弥补以前年度亏损还是提盈余公积
  • 浅谈一下新冠的好处
  • 发票认证的目的和意义
  • 信用减值损失的借贷方向
  • 织梦内容页模板修改
  • 出口关税的计算公式
  • sqlserver2008新建实例
  • 长期资产的减值会影响CFO吗
  • 其他应收款科目代码
  • 新准则下交易性金融债券
  • 企业丢失专用发票税务机关如何处理
  • 应付职工薪酬账户贷方登记的是
  • 高速公路通行费抵扣税率
  • 个体户减免税额怎么填
  • 加油票抬头开错了
  • 新公司建账流程及日常业务处理
  • 个体工商户如何缴纳社保
  • 怎样计算债券利息
  • redhat server
  • 微软数据收集
  • windows如何安装安卓软件
  • win7控制台怎么打开
  • win8系统手机
  • win2003安全模式怎么进
  • Windows server 2008设置远程桌面连接的详细步骤(图文教程)
  • linux中w命令详解
  • VMware Workstation虚拟机网络连接不可用
  • [置顶]bilinovel
  • unity基础包
  • javascript性能优化写法
  • 如何用js实现一个简单的计算器
  • 买药开税票多少税率
  • 领导班子和领导干部年度考核
  • 三方协议开票流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设