python 打包工具推荐

PyPi

PyPI(Python Package Index)是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI。PyPI推荐使用pip包管理器来下载第三方库

pip可正常工作在Windows、Mac OS、Unix/Linux等操作系统上,但是需要至少2.6+和3.2+的CPython或PyPy的支持。python 2.7.9 和3.4以后的版本已经内置累pip程序,所以不需要安装

安装包的工具

  1. 使用pip安装来自PyPI的包
  2. 将virtrualenv或venv用于python环境的应用级隔离

创建包与分发的公工具

  1. 使用setuptools来定义项目并创建源代码发行版
  2. 使用wheel而不是egg来创建构建发行版
  3. 使用twine向PyPI上传包的发行版

pip install安装包与python install安装包的区别

项目配置

组织大型应用的代码的最简单的方法旧式将其分成几个包,这样做将使代码更容易理解,维护和修改,也使每个包的可复用性最大化,就像使用组件一样方便。

setup.py

对于一个需要被分发的包来说,其根目录包含一个setup.py脚本。它定义了distutils模块中描述的所有元数据,并将其合并为标准的setup()函数调用的参数。虽然distutils是一个标准库模块,但还是建议你使用setuptools包来代替,它对标准的distutils做了一些改进。(distutils标准库的增强版,适用于 Python 2.3.5 以上的版本,64 位平台则适用于 Python 2.4 以上的版本)

Distutils使用介绍:https://blog.csdn.net/fireflychh/article/details/80162981

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

setup.py文件中至少包含内容如下:

from setuptools import setup
setup(name="mypackage"
)

  name给出了包的全名,该脚本提供了一些命令

standard commands:标准命令,是distutils提供的内置命令

Extra commands:额外命令,是由setuptools这样的第三方包或任何其他定义并注册一个新命令的包所创建的

setup.cfg

setup.cfg文件包含setup.py脚本命令的默认选项,如果构建和分法包的过程很复杂,并且需要像setup.py命令中传入许多可选参数,那么这个文件非常有用,Setup.py先解析setup.cfg文件

关于setup.py和setup.cfg的关系参考:https://blog.csdn.net/joelovegreen/article/details/46373619

setup.cfg的语法与内置configparser模块提供的语法相同,类似与windows平台下的ini文件。

setup.cfg 示例说明:

[global]
quiet=1[sdist]
formats=zip,tar[bdist_wheel]
universal=1

  这个配置示例可以确保源代码发行版是以两种格式创建(ZIP和TAR),并且构建wheel发行版将被创建为通用wheel(与pthon版本无关),此外,由于全局quiet开关,每个命令的大部分输出都将被阻止

MANIFEST.in

此文件在打包的时候告诉setuptools还需要额外打包那些文件

一般情况下,使用sdist命令构建发行版是,distutils将浏览包的目录,查找需要包含在文档中的文件,distutils将包含:

  1. py_modules,packages,和scripts选项隐含的所有pthon源文件
  2. ext_modules选项列出的所有C源文件
  3. 匹配glob模式test/test*.py的文件包括:README,README.txt,setup.py和setup.cfg
  4. 如果你的包是由svn或CVS管理,那么sdist还将浏览诸如.svn之类的文件夹

如果你还像要包含除disutils包含文件之外的文件使,比如一些静态文件,那么在与setup.py相同的目录中,你可以为MANIFSET文件定义一个名为MANIFEST.in的模板,在其中你可以指定sdist要包含哪些文件

这个模板的每一行都定义一条包含或排除规则,例如:

include HISTORY.txt

include README.txt

include CHANGES.txt

include LICENSE

recursive -include *.txt *.py

参考:http://www.imooc.com/article/253042

trove分离器

pypi和distutils为应用程序的分类提供了一个解决方案,就是使用一套被称为trove分类器。所有分类器都形成一个树状结构,每个分类器都是字符串形式,其中用::字符串分隔每个命名空间,分类器列表在包定义中是作为setup()函数的classifiers参数。例如如下项目的分类其列表:

from setuptools import setup
setup(name="solrq",classifiers=['Development Status::4 -Beta','License::OSI Approver :: BSD License','Operating System :: OS Independent','Programing Language :: Python','Programing Language :: Python :: 2','Programing Language :: Python :: 2.6',]
)

  这个参数是可选的,trove还可以提供一些信息:支持的python版本或系统,项目的开发阶段或发布代码所使用的许可证

python命名空间和作用域详解:https://www.jb51.net/article/114951.htm

上传一个包

在pypi上发布自己的包:https://www.cnblogs.com/sting2me/p/6550897.html

一篇非常好的python打包分发文章,内容几乎都囊括而且还易懂:https://blog.csdn.net/chenfeidi1/article/details/80873979

常用工具

PyInstaller

  PyInstaller是一个压缩python文件成为可执行程序的一个软件。它会扫描你所有的Python文档,并分析所有代码从而找出所有你的代码运行所需的模块。然后,PyInstaller会将所有这些模块和你的code放在一个文件夹里,或者一个可执行文件里。这样以来,你的用户就不用下载各种你的软件运行环境了,例如各种版本的python,各种不同的python包等等。他们只需要执行打包好的可执行文件就可以使用你的软件了

下面是PyInstaller使用的一个简单示范:

将你的一个python文件:Hello.py打包成可执行文件: 
在终端的命令行简单的输入: 
pyinstaller Hello.py 
在当前的文件目录里面,将会生成两个文件夹:build和dist。dist里面就是所有可执行文件了

pyinstaller参数介绍以及总结:https://blog.csdn.net/bearstarx/article/details/81054134

总结Pyinstaller的坑及终极解决方法:https://blog.csdn.net/u012313895/article/details/78271313,https://blog.csdn.net/u014563989/article/details/80940321

转载于:https://www.cnblogs.com/gzl420/p/10926988.html

python打包,上传包知识点学习相关推荐

  1. python打包上传至pypi —— 具有多个目录的项目工程快速打包上传

    项目目录 项目目录说明: cqrcode:项目包(我的里面有多个目录) LINCENSE:许可证 MANIFEST.in:需要打包的项目文件说明 README.md:项目说明文档 requiremen ...

  2. python382怎么用_手把手教你使用python自动打包 上传应用分发

    1)先上脚本 步骤很简单 ,如下文所示 本脚本是基于python3,如何在mac 电脑升级python3 参考我2天前写的文章 Mac 系统同时安装python2 和python3 #!/usr/bi ...

  3. Android 通过python实现自动化构建打包上传加固

    Android 通过python实现自动化构建打包上传加固 实现需求: 基于gradle命令,通过python实现多渠道,多环境打包,上传蒲公英,360加固等 经过学习调研完成步骤如下: 一,通过gr ...

  4. python模块打包上传pypi

    python模块打包上传pypi pypi注册 先在pypi.org上注册账户密码,务必牢记 包 模块尽量都保存在包中,如果要进行模块的定义,首先定义的就是包, 所以每个目录下需要一个__init__ ...

  5. python模块打包上传pypi-演示pytest hook函数二次开发

    python模块打包上传pypi pytest hook函数二次开发 修改默认编码 显示中文用例名称 官方文档 : https://packaging.python.org/en/latest/tut ...

  6. Maven学习六之利用mvn deploy命令上传包

    mvn:deploy在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享. 以将ojdbc14传到nexus中的thirdparty为例 一 配置 ...

  7. RN Error: 无法获取此包的编译时间戳。请更新react-native-update到最新版本后重新打包上传。

    老项目:RN 0.44.0 react-native-update 4.0.6 注意:如果网不行那得开4G或者5G 之前热更新的时候遇到这样的问题 请问如何进行操作 : edz$ pushy uplo ...

  8. Springboot 项目打包上传到私服 Nexus3,如何通过私服下载自己上传的jar包,Nexus3的搭建和使用(二)

    上一篇写了私服的搭建和登录后的界面介绍,这一篇具体写一下私服的使用,如何通过私服下载工程依赖,如何上传自己项目为其他工程项目引用. 一,如何通过私服下载项目工程依赖 下面的图是登录之后的界面,主要是第 ...

  9. 发布你自己的轮子 - PyPI打包上传实践

    文章目录 发布 Python 包 准备 创建用户验证文件 创建项目结构 编写setup.py 编写README.md 编写LICENSE 生成发布包 本地测试(可选) 上传到PyPI 安装测试 常见错 ...

  10. iOS证书申请打包上传App Store审核完整流程(7个步骤)

    上架基本需求资料 1.苹果开发者账号 2.开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestFlight测试然后提交 ...

最新文章

  1. MongoDB使用小结:一些常用操作分享
  2. 【codevs2011】【LNOI2013】最小距离之和
  3. oracle 生成 json文件,oracle - PLSQL导入JSON并导出为JSON文件 - 堆栈内存溢出
  4. [转]c++之菱形继承
  5. LeetCode 774. 最小化去加油站的最大距离(极小极大化 二分查找)
  6. SublimeText3 初探(工欲善其事,必先利其器)
  7. 【版本控制管理】 深入 001 A successful Git branching model GIT 项目分支策略和释放管理
  8. 清北学堂dp图论营游记day4
  9. 广告点击率预测_用于广告点击率预测的逻辑回归你会了吗?
  10. 客户端的js js脚本的引入 js的解析过程
  11. python表格处理_python如何处理表格?
  12. matplotlib--python的数据可视化二
  13. 一文了解机器学习以及其相关领域(上)
  14. 计算机二级vb上机题,全国计算机二级VB上机题库(题 答案).doc
  15. “属你最牛” | 树莓派百变打印机
  16. android tv 盒子,安卓TV电视盒子推荐软件一览表(盒子端+手机端+电脑端+群晖端)...
  17. minio更换端口启动
  18. 初识JavaScript,体验JS的美好
  19. Ubuntu Qt项目编译提示 cannot find -lGL
  20. 英特尔芯片漏洞比想象中更严重:控制计算机无需密码

热门文章

  1. gdb进行多线程调试
  2. UIScrollView与分页的联合使用
  3. HDU-1394 Minimum Inversion Number 线段树+逆序对
  4. 2010年 我的齐鲁软件大赛作品
  5. ProcessPoolExecutor
  6. Visio怎么删掉已有部分图形
  7. 【GPT-3】地表最强语言模型GPT-3的局限与出路
  8. 【号外】来人鸭~ 本公众号招人啦~
  9. 基于attention的seq2seq机器翻译实践详解
  10. numpy - np.asarray