最近做个一个项目需要用到setup.py 这个构建工具来进行项目的便捷安装,把搜集到的一些资料加上个人理解整理成文章,如有错误的地方请各位大佬及时指出,小弟马上修改,下面正式进入setup.py的描述讲解.

1.因为我们要用setup.py来将我们的项目打包成一个Python包,所以首先我们需要创建一个包文件夹,该包的命名依照以下包版本的命名格式:

N.N[.N]+[{a|b|c|rc}N[.N]+][.postN][.devN]

解释:

"N.N": 必须的部分,两个"N" 分别代表了主板本和副版本号.

"[.N]": 次要版本号,可以有零或多个.

"{a|b|c|rc}": 阶段代号,可选, a,b,c,rc  分别代表alpha, beta, candidate 和 release candidate.

"N[.N]": 阶段版本号,如果提供, 则至少有一位主版本号, 后面可以加无限多位的副版本号.

".postN": 发行后更新版本号, 可选.

".devN": 开发期间的发行版本号, 可选.

注意: 上面涉及到的命名中的英文字母尽量全是小写(我测试的时候是全用的小写没有出现什么问题,这个根据具体情况定吧).

2.包的版本号确定之后,需要弄清楚包里面应该包含那些文件, 一个标准的包里面应该包含CHANGES.rst , LICENSE , MANIFEST.in , README.rst , setup.py , setup.cfg , src(含有__init__.py 文件的文件夹), 可能有的文章还会介绍有别的文件,但是有这些文件基本上不会出现什么问题.

3.介绍完包中的文件之后,我们来看一下每个文件具体的作用.

MANIFEST.in : 里面就是需要包含在分发包中的文件,也就是需要把要查找的分发的包的路径写上,例如:

1 include MANIFEST.in

2 recursive-include src/*

View Code

setup.cfg : 文件主要用于提供setup.py 的默认参数, 我用到的是填上了pip 镜像源的地址,如果有其他的需要,可以参考https://docs.python.org/3/distutils/configfile.html

[easy_install]

Index_url= http://pypi.douban.com/simple

View Code

src : 该文件夹里面含有__init__.py 文件, 还应该含有需要打包的源代码, 主要用于setup.py 文件中的packages: find_packages() 这个参数.

setup.py : 主要写需要安装的包的一些配置信息, 这里主要介绍一下里面常用到的一些基本的参数:

name : 包的名称, 以后查找的时候需要根据此名称查询.

version : 包的版本号.

license : 程序的授权许可信息.

description : 程序的简单描述.

long_description : 程序的详细描述.

auther : 程序的作者.

auther_email : 程序作者的邮箱.

packages : 需要处理的包目录 (包含__init__.py 文件的文件夹), 一般可以采用find_packages() 这个函数, 它会默认在和setup.py 同一目录下搜索各个含有__init__.py 的包,也可以排除一些特定的包, find_packages(exclude=[" *.text", ....]).

install_requires : 需要安装的依赖包, 这个的值应该是一个list列表.

download_url : 程序的下载地址.

package_data : 指定包内需要包含的数据文件.

data_files : 打包时需要打包的数据文件, 如图片, 配置文件等.

setup_requires : 指定运行setup.py 这个文件本身所依赖的包.

include_package_data : 该参数设置为True 时, 自动添加包中受版本控制的数据文件.( 这个我也没有太搞懂, 不过一般都会设置成True, 有大神明白的可以教教我,感谢! )

zip_safe : 该参数决定了包是否作为一个zip压缩后的egg 文件安装,还是作为一个以 .egg 结尾的目录安装. 因为有些工具不支持zip压缩文件, 而且压缩后的包也不方便调试, 所以建议将其设置为False.

entry_points : 发现动态服务和插件, 在entry_points 中, console_scripts 指明了命令行工具的名称, 如下面的代码示例一样, 等号前面指明了工具包的名称, 等号后面的内容指明了程序的入口地址, 这里可以有多条记录, 这样一个项目就可以制作多个命令行工具了.当我们想要启动对应的程序时, 只需要输入等号前面的工具包的名称即可.

1 setup(2 #.....

3 entry_points={4 "console_scripts": [5 "service_name=service.main",6 .....................7 ]8 }9

10 )

View Code

4.以上的我整理的内容就可以完成一般常规项目的setup.py 文件的制作了,如果需要添加具体别的功能参数可以参考以下网站:

python项目安装_简单使用setup.py来安装Python项目相关推荐

  1. python程序打包多个py文件_不使用setup.py,打包 Python 项目

    我编写了许多开源项目,并允许其他人通过PyPI访问这些项目.为此,我需要从这些项目构建一个源代码分发版(sdist)和一个可选的wheel包,并将二者上传到PyPI.最后,这个sdist和wheel包 ...

  2. python setup.py build_打包Python项目为rpm时遇到python setup.py build报错的问题

    问题描述 使用rpmbuild打包python项目,执行报错 rpmbuild -bb autoinstall.spec hrwxr-xr-x XXX/XXX     0 2018-12-19 13: ...

  3. jekenis父子结构项目打包_全栈之DevOps系列 - 发布 Python 项目 开源/私有 包

    DevOps目前并没有权威的定义,普遍认为,DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快.更频繁地交付更稳定的软件. 作者以 dukepy 系 ...

  4. python硬件驱动_从零开始:手把手教你安装深度学习操作系统、驱动和各种python库!...

    原标题:从零开始:手把手教你安装深度学习操作系统.驱动和各种python库! 为了研究强化学习,最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器.尽管目前在网络中能找到一些环境部署指 ...

  5. python redis模块_大数据入门4 | Redis安装及python中的redis模块加载

    引:前面学习了中文分词.HMM.jieba...这些有很多内容需要总结,但是时间太紧,一下写不完.所以前面的就先放一边,届时复习时再写吧. 今天把刚学的遇到的问题总结一下. 实践部分遇到的问题: 1. ...

  6. 群晖python套件包_群晖中给Python3安装pip工具以安装扩展包

    重要:本文最后更新于2021-02-01 22:34:49,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗. 今天折腾这群晖迷你Linux系统的时候遇到一个问题,Python写的程序基 ...

  7. python3 setup.py install_安装Twisted执行python3 setup.py install报错

    源自:2-1 scrapy的安装.和安装中遇到的问题 安装Twisted执行python3 setup.py install报错 [bigdata@elephant Twisted-17.1.0]$ ...

  8. 什么是python扩展库_什么是目前比较常用的Python扩展库管理工具

    展开全部 在Python环境中已经有很多成熟的包,可以通过安装这些包来扩展我们的程序. 例如,很32313133353236313431303231363533e4b893e5b19e31333365 ...

  9. python中init和setup有什么区别_python – 为什么setup.py在安装期间运行模块__init__.py?...

    我正在使用setup.py安装包: python setup.py install 我正在安装的软件包中的__init__.py包含一些软件包级别检查,其中一个检查settings.py中是否有可用的 ...

最新文章

  1. sequelize 增加数据库字段_使用Sequelize动态创建新表
  2. 第三方工具生成密钥对连接GCP服务器(putty生成密钥远程连接服务器)
  3. win7可以安装sqlserver2008 企业版吗_MYSQLServer2008R2详细的图文安装教程
  4. 面试时,面试官到底在考察什么?
  5. 列表ls按照升序排列的python内置函数是_Python习题集
  6. Linux system函数返回值
  7. Beta 分布的应用
  8. Spring Cloud构建微服务架构(四)分布式配置中心(续)
  9. C语言程序设计(第三版)何钦铭著 习题4-11
  10. VB利用SHFileOperation实现拷贝、删除、重命名文件
  11. 【imx6ul】从头搭建imx6ul开发环境(uboot、内核编译及烧入、mfgtools详细使用方法)
  12. 京东、搜狗“带狗”都好好的,为何司机对快狗打车不满意?
  13. C++使用OLE高速读写EXCEL的源码
  14. html 隐藏tbody,隐藏的tbody
  15. 基于深度信念网络的表示学习用于lncrna -疾病关联预测
  16. 投资学U09 资本资产定价模型 习题笔记
  17. java商品管理系统
  18. Java中文网站收藏
  19. 全国OSTA计算机高新技术SQLSever数据库四级证书--考证复习知识点集合(附下载地址)
  20. 虚拟机架设传世服务器,大话西游2特色版虚拟机镜像一键服务端+启动教程+物品ID+GM设置方法+数据库工具等...

热门文章

  1. 双线双IP(多线多IP)域名智能解析教程
  2. 计算机学院校运会解说词,大学运动会方阵解说词
  3. yacs--Python代码运行时的配置系统
  4. 商务部2013-2014年度电子商务示范企业名单
  5. bugku 小山丘的秘密
  6. 【EasyUse】关于键盘加速键的几点思考
  7. 用flask快速打造一个技术导航网站,并自动采集导航!附源码
  8. 应聘时被问到「你的期望薪资是多少」,怎样回答才是最合理的呢?
  9. 爱我专业主题黑板报计算机,我爱我班主题黑板报
  10. 微服务 微服务架构