python工程怎么打包,python打包安装包
Python项目打包(一)-setup.py,Python源代码项目结构_技术博客of _wx60adfd72959c6 _博客
setup.py distutils的官方文档安装脚本编写说明
打开上面的链接后,可以选择Python的版本和文档的语言。Setup安装脚本编写说明【推荐】具体案例建议查看以下两篇博客:
Python项目打包(二)——使用setup.py打包python项目打包(三)——使用cx_Freeze package项目讲解setuptools安装脚本应用程序带环境官方教程的打包和分发要求。首先你有一个Python环境(这不是废话),环境的具体要求如下:
python命令行是可执行的,可以通过python - version测试。pip命令行是一个可执行命令,可以通过pip版本进行测试。
如果显示没有安装,使用boot:python-m guarantee pip-default-pip来确保您的pip、setuptools和wheel是最新的。
使用命令:python-m pip install-upgrade pip setup tools wheel进行更新。如果你想把你的包上传到PYPI,你必须下载twine。
外壳管道安装绳线
配置您的项目
开始关注setup.py的时候,requirements.txt就不用说了。这里的requirements.txt文件和你包下的目录结构都是我添加的。它们是非官方的例子,你可以自由选择。上面的项目图是我建议的源代码目录结构。
Setup.py必须先有setup.py,这个文件需要放在项目的根目录下。以下是Python的一个示例项目:
看到这里,我们应该知道这个文件是干什么用的了。不然怎么看到这个就迷路了?那一年写完这个文件,我们可以用下面这个命令看看可以用哪些参数。
这个结果和一个具体的项目有关。不同的setup.py文件有不同的结果!
Setup.cfg文件setup.cfg主要记录setup.py的一些默认选项.
OCR项目中setup.cfg的配置信息如下:
[元数据]
有关更多信息,请等待更新.
自述文件所有项目都应该包含一个包含项目目标的自述文件。最常见的是使用restructedText(rst格式)。当然,这不是必须的。目前很多项目都在使用Markdown文档,至少在GitHub上,在我的使用范围内比较常见!
MANIFEST.in文档MANIFEST.in文件是必需的。当您想要打包不包含在分发源中的文件时,您需要列出这些路径。以EasyOCR为例。它的MANIFEST.in文件内容是:
包含LICENSE.txt
包含README.md
包括easyocr/model/*
包括easyocr/character/*
包含easy ocr/dict/* license.txt文件每个软件包都应该包含一个详细说明分发条款的许可证文件。在许多管辖区,没有明确许可的软件包不能被除版权所有者之外的任何人合法使用或分发。我知道你的项目都不想被我们用,但是如果你突然想开源一个项目呢?你会经常在GitHub里看到Apache,GPL,MIT等协议。这些协议有不同的权限。这部分不知道怎么写。请参考选择开源许可证。
项目文件的这个文件夹是个性化的,不同的项目有不同的名称和结构。但是,对于同一个公司或个人,你的项目最好采用统一的源代码结构规范,没有任何规则可以做一个方圆。
setup.py内部函数设置介绍。setup.py文件包含一个全局设置函数。在看具体参数之前,我们先看看官方的例子和EasyOCR的setup.py文件。
官方示例` `` python
一个基于setuptools的设置模块。
参见:
https://packaging . python . org/guides/distributing-packages-using-setup tools/
https://github.com/pypa/sampleproject
#总是优先选择安装工具而不是分发工具
从setuptools导入设置中,查找_包
导入路径库
这里=pathlib。Path(__file__).parent.resolve()
#从自述文件中获取详细描述
long _ description=(here/ readme . MD )。read_text(编码=utf-8 )
#要上传到PyPI,必须包含下面标记为“必需”的参数。
#标记为"可选"的字段可能会被注释掉。
设置(
#这是您项目的名称。你第一次发表这个的时候
#包,这个名字会给你注册的。它将决定如何
#用户可以安装此项目,例如:
#
# $匹普安装示例项目
#
#它将生活在哪里:https://pypi . org/project/sample project/
#
#有效的项目名称有一些限制
#此处为规格:
# https://包装。python。组织/规格/核心-元数据/#名称
name=样本项目,#必选
#版本应符合PEP 440:
# https://www.python.org/dev/peps/pep-0440/
#
#有关跨setup.py和单一来源版本的讨论
#项目代码,参见
# https://包装。python。org/en/latest/single _ source _ version。超文本标记语言
版本=2.0.0 ,#必需
#这是对项目内容的一行描述或标语。这
#对应于"摘要"元数据字段:
# https://包装。python。组织/规格/核心-元数据/#摘要
描述=一个示例计算机编程语言项目,#可选
#这是对您的项目的可选的更长描述,代表
#用户访问代码简单时将看到的正文。
#
#通常,这与您的自述文件相同,因此您可以从
#该文件直接(正如我们已经做了以上)
#
#此字段对应于"描述"元数据字段:
# https://包装。python。组织/规格/核心-元数据/#描述-可选
long _ description=long _ description,#可选
#表示我们的长_描述处于降价状态;有效值包括
#文本/纯文本、文本/x-rst和文本/降价
#
#如果长_描述是用重构文本编写的,则是可选的,但是
#对于纯文本或减价是必需的;如果未指定,应用程序应
#尝试将[长_描述]呈现为text/x-rst;字符集=UTF-8和
#如果不是有效的rst,则返回到 text/plain (参见下面的链接)
#
#此字段对应于"描述-内容-类型"元数据字段:
# https://包装。python。org/specifications/core-metadata/# description-content-type-可选
long _ description _ content _ type= text/markdown ,#可选(参见上面的注释)
#这应该是一个到你的项目主页的有效链接。
#
#此字段对应于"主页"元数据字段:
# https://包装。python。org/specifications/core-metadata/#主页-可选
URL= https://github。 com/pypa/示例项目,#可选
#这应该是您的姓名或拥有的组织的名称
#项目。
author=A。随机开发人员,#可选
#这应该是与所列作者对应的有效电子邮件地址
#以上。
author _ email= author @ example。 com ,#可选
#分类器通过对项目进行分类,帮助用户找到项目。
#
#有关有效分类器的列表,请参见https://pypi.org/classifiers/
分类器=[ #可选
#这个项目有多成熟?常见的价值观有
# 3 -阿尔法
# 4 -测试版
# 5 -生产/稳定
开发状态* 3-阿尔法,
#指明您的项目面向谁
目标受众:开发人员,
主题:软件开发:构建工具,
#随心所欲挑选您的许可证
许可证*现场视察批准:麻省理工学院许可证,
#在此指定您支持的计算机编程语言版本。特别是,确保
#表明你支持Python 3 .这些分类器不是
#由“皮普安装"检查。请参见下面的" python_requires " .
编程语言* Python:3 ,
编程语言* Python:3.5 ,
编程语言* Python:3.6 ,
编程语言* Python:3.7 ,
编程语言* Python:3.8 ,
编程语言* Python:3:Only ,
],
#此字段为您的项目添加关键字,这些关键字将出现在
#项目页面。你的项目与什么有关?
#
#请注意,这是一个附加关键字列表,用分隔符隔开
#以逗号分隔,用于帮助搜索中的分布
#更大的目录。
关键词=样本,设置工具,开发,#可选
#当您的源代码位于项目根目录下的子目录中时,例如
# `src/`,必须指定`包_目录参数。
package_dir={: src},#可选
#如果您的项目是
#简单。或者可以使用find_packages()。
#
#或者,如果您只想分发单个计算机编程语言文件,请使用
#将" py _模块"参数改为如下,这将需要一个文件
#名为my_module.py 的存在:
#
# py_modules=[my_module],
#
包=查找包(其中=src ),#必选
#指定您支持的计算机编程语言版本。与
#"编程语言"分类器以上,“皮普安装"将检查这一点
#如果版本不匹配,则拒绝安装该项目。看见
# https://包装。python。org/guides/distributing-packages-using-setup tools/# python-requires
python_requires==3.5,4 ,
#此字段列出项目运行所依赖的其他包。
#您放在这里的任何软件包都将在您的项目被
#已安装,因此它们必须是有效的现有项目。
#
#有关" install_requires "与点要求文件的分析,请参见:
# https://packaging.python.org/en/latest/requirements.html
install _ requires=[胡椒玉米],#可选
#在此列出其他依赖组(如开发
#依赖关系)。用户可以使用"附加软件"安装这些软件
#语法,例如:
#
# $匹普安装示例项目[开发]
#
#与上面的" install_requires "类似,这些必须是有效的现有文件
#项目。
extras_require={ #可选
dev: [check-manifest],
测试:[覆盖率],
},
#如果您的软件包中包含需要
#已安装,请在此指定。
包数据={ #可选
sample: [package_data.dat],
},
#虽然"包_数据"是首选方法,但在某些情况下,您可能会
#需要将数据文件放在您的包之外。参见:
# http://个文档。python。org/distutils/安装脚本。html #安装-附加-文件
#
#在这种情况下,"数据文件"将被安装到"/我的数据"中
数据文件=[(我的数据,[数据/数据文件])],#可选
#若要提供可执行脚本,请优先使用入口点,而不是
#"脚本"关键字。入口点提供跨平台支持,并允许
# `匹普为目标创建适当形式的可执行文件
#平台。
#
#例如,下面将提供一个名为`样本的命令,它
#调用时从该包中执行函数“主要”:
入口点数={ #可选
控制台_脚本:[
样品=样品:主要,
],
},
#列出与你的项目相关的其他网址。
#
#此字段对应于"项目URL "元数据字段:
# https://包装。python。org/specifications/core-metadata/# project-URL-多用途
#
#列出的示例包括用于指定包跟踪位置的模式
#问题,源在哪里托管,在哪里感谢软件包
#维护者,以及从哪里为项目提供财政支持。关键是
#什么用来在代码简单上呈现链接文本。
project _ urls={ #可选
"错误报告": https://github . com/pypa/sample project/issues ,
资金: https://duate。皮皮。组织,
说谢谢! http://saythanks.io/to/example ,
"来源": https://github . com/pypa/sample project/,
},
)
` ` EasyOCR示例``蟒蛇皮
端到端多语言光学字符识别(光学字符识别)解决方案
从下载导入设置
从超正析象管导入打开
用打开( requirements.txt ,编码=utf-8-sig )作为女:
要求=f.readlines()
极好的自述文件():
用打开( README.md ,编码=utf-8-sig )作为女:
README=f.read()
返回自述文件
设置(
name=easyocr ,
packages=[easyocr],
include_package_data=True
版本=1.1.7 ,
install _ requires=要求,
entry _ points={ console _ scripts :[ easy ocr=easy ocr。CLI:main ]},
license=Apache许可证2.0 ,
描述=端到端多语言光学字符识别(光学字符识别)解决方案,
long_description=readme(),
long _ description _ content _ type= text/markdown ,
author= Rakpong Kittinaradorn ,
author _ email= r . kittinaround @ Gmail。 com ,
URL= https://github。 com/jaide Dai/easy ocr ,
下载_ URL= https://github。com/jaide Dai/easy ocr。 git ,
关键词=[ocr光学字符识别深度学习神经网络],
分类器=[
开发状态:5 -生产/稳定
],
)
```上面我们初步认识了setup.py文件,下面重点看一下设置函数。
参数名字此参数是你的项目名字,项目命名简洁一些,不要花里胡哨,分割符"-"、"_"、"."等用一个就好,多了它也认为是一个冗余,搜索时相似的结构都会指向同一对象。
参数版本指定项目的版本号,如:版本=1.2.0 ,
参数描述项目的详细描述
描述=一个示例计算机编程语言项目,
长描述=长描述,
long _ description _ content _ type= text/x-rst ,参数全球资源定位器(统一资源定位器)你的项目主页
清澈的爱,只为中国
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。