前言

软件最终都会有交付的形式,有的是用tar包,有个是以目录,有的是封成一个文件包,从大多数使用场景来说,直接打包成软件包的方式是最简单,也是最不容易出错的,路径可以在包里面写死了

实践

关于打包的资料网上很多,而封包的方式也很多有spec文件方式,有fpm打包方式,本篇记录的是通过setup.py的方式打包的,因为最近出了小工具,所以进行了相关的尝试,这里记录一下

首先创建一个setup.py文件,写上一些基础内容

[root@test redmine]# cat setup.py
# coding:utf-8
#from distutils.core import setup
from setuptools import setup, find_packages setup(
name='issue-check',
version='2020-0403-1419',
description='This redmine issue-check',
author='zphj1987',
author_email='zphj1987@gmail.com',
license='MIT',
url='https://github.com/zphj1987/issue-check.git',
py_modules=['issue-check','issue-check-pretty'],
data_files=[('/opt/issue-check/',['issue.conf.sample']),('/opt/issue-check/',['README.md'])]
)

上面的就是把当前目录的issue-check.py和issue-check-pretty.py打包进rpm,把issue.conf.sample打包到/opt/issue-check/这个路径下面

通过data_files可以进行安装路径的控制,而上面的py_modules则不在这里进行控制了,需要增加一个配置文件setup.cfg

[install]
install-lib=/opt/issue-check

修改以后,安装路径就指定到/opt/issue-check下面了,如果不做控制,就会默认安装到python的执行目录里面去,上面的这些简单的控制以后就可以开始封包的命令了

python setup.py bdist_rpm

执行完了后在当前目录的dist目录下面就会生成相关的rpm包和源码的rpm包,这个实际上也是调用了spec,然后进行的相关打包工作,只是在这个之上再封装了一层

暂时未解决的问题

默认这样的打包方式会生成egg相关的文件,并且打包过程中会编译pyc,pyo等文件,暂时还没找到方法简单的去把这些文件给去掉,不过也不会太大的影响

总结

如果是做py的软件包,建议还是能够封包后再输出

变更记录

Why Who When
创建 武汉-运维-磨渣 2020-04-03

最新文章

  1. CSS水平垂直居中的方法
  2. fuser命令小结
  3. 打地鼠游戏ios源码
  4. CentOS7添加第三方源
  5. iphone升级ios7之后出现蓝框框一直跳的问题
  6. php数组基础知识
  7. ng2 配置端口号
  8. python利用requests和threading模块,实现多线程爬取电影天堂最新电影信息。
  9. mysql高性能6章总结(下) mysql查询优化
  10. android 开发 使用自定义布局实现标题栏复用(标题栏内容自定义:使用代码实现和xml布局自定义属性2种办法实现)
  11. Jmeter核心-hc课堂笔记
  12. Mschart的Annotations属性使用
  13. imx6ul开发板
  14. leetcode -- Best Time to Buy and Sell Stock III TODO
  15. Centos 6.5下安装vsftpd服务器
  16. 前端javascript实现二进制读写操作
  17. Linux性能测试分析命令_sar+iostat+vmstat+top
  18. 释伴:Linux 上的 Shebang 符号(#!)
  19. CF886E Maximum Element
  20. MHA启动及关闭

热门文章

  1. 程序员,想被别人发掘?那你有 freestyle 吗?
  2. linux(centos8):用tr替换或删除字符
  3. 数据库备份作业的T-SQL语句
  4. C# 向服务器发送信息
  5. 解决Mac下AndroidStudio内容时卡顿
  6. collection v1.3.1升级全记录
  7. revel run报错 undefined: sys call.SIGUSR2"
  8. js中!!的运用
  9. 【3】TensorFlow光速入门-训练及评估
  10. jq animate 的第二写法