python如何打包,实现pip install
目录
- 官方地址
- 打包流程
- 创建pyproject.toml(可选)
- 配置元数据
- 静态源数据
- 动态源数据(如果包含该文件,即使没有参数也要调用setup())
- 创建README.*md*
- 安装软件包
- 方式一
- 方式二
- 方式三
官方地址
https://packaging.python.org/tutorials/packaging-projects/
打包流程
创建pyproject.toml(可选)
pyproject.toml是告诉构建工具(例如pip10+和 build)的文件,您正在使用的系统以及构建所需的系统。如果缺少此文件,则默认为假定使用经典的setuptools构建系统,但最好明确一些。如果您有pyproject.toml文件,您将可以依赖wheel和存在其他软件包。大多数项目用以下设置就够了
[build-system]
requires = ["setuptools>=42","wheel"
]
build-backend = "setuptools.build_meta"
build-system.requires提供构建软件包所需的软件包列表。在此处列出某些内容只会使其在构建期间可用,而在安装之后不可用。
build-system.build-backend从技术上讲是可选的,但是setuptools.build_meta:__legacy__如果您忘记包含它,则会得到 替代,因此请始终包含它。如果要使用flit或poetry之类的其他构建系统, 这些将在此处使用,并且配置详细信息将与下面描述的setuptools配置完全不同。看PEP 517和PEP 518了解背景和详细信息
配置元数据
元数据有两种类型:静态和动态。
静态元数据(setup.cfg):setup.cfg是一个ini文件,其中包含setup.py命令的默认选项 。setup.cfg提供一种方式,可以让包的开发者提供命令的默认选项,同时为用户提供修改的机会。对setup.cfg的解析,是在setup.py之后,在命令行执行前
动态元数据(setup.py):setup.py的主要特征是它包含一个全局setup()函数。此函数的关键字参数是如何定义项目的特定详细信息。
静态元数据应该是首选,动态元数据仅在绝对必要时才用作逃生舱口(官网原话,但是发现好多都是用的*setup.py*)。
元数据参数详情
静态源数据
[metadata]
# replace with your username:
# 包名
name = example-pkg-YOUR-USERNAME-HERE
# 软件版本
version = 0.0.1
# 作者
author = Example Author
# 作者邮箱
author_email = author@example.com
# 该软件包的简介,一句话摘要
description = A small example package
# 软件详细说明这在Python软件包索引的软件包详细信息页面上显示。在这种情况下,将README.md使用file:指令加载长描述,这是一个常见的模式。
long_description = file: README.md
# 告诉索引用于长描述的标记类型
long_description_content_type = text/markdown
# 项目主页的URL。对于许多项目,这仅是指向GitHub,GitLab,Bitbucket或类似代码托管服务的链接。
url = https://github.com/pypa/sampleproject
# 可让您列出要在PyPI上显示的任意数量的额外链接。通常,这可能是文档,问题跟踪器等。
project_urls =Bug Tracker = https://github.com/pypa/sampleproject/issues
# 一些额外的源数据
classifiers =Programming Language :: Python :: 3 # 该软件包使用的python版本License :: OSI Approved :: MIT License # MIT许可证Operating System :: OS Independent # 兼容的操作系统[options]
# 软件包名称和目录的映射。空的程序包名称表示“根程序包”,即项目中包含该程序包的所有Python源文件的src目录
package_dir == src
# 应该包含在分发包中的所有Python导入包的列表。无需手动列出每个软件包,我们可以使用指令自动发现所有软件包和子软件包并 指定要使用的。find:options.packages.findpackage_direxample_pkg
packages = find:
# 项目支持的Python版本。
python_requires = >=3.6[options.packages.find]
where = src
动态源数据(如果包含该文件,即使没有参数也要调用setup())
import setuptoolswith open("README.md", "r", encoding="utf-8") as fh:long_description = fh.read()# 必须要调用,即使没有参数
setuptools.setup(name="example-pkg-YOUR-USERNAME-HERE", # Replace with your own usernameversion="0.0.1",author="Example Author",author_email="author@example.com",description="A small example package",long_description=long_description,long_description_content_type="text/markdown",url="https://github.com/pypa/sampleproject",project_urls={"Bug Tracker": "https://github.com/pypa/sampleproject/issues",},classifiers=["Programming Language :: Python :: 3","License :: OSI Approved :: MIT License","Operating System :: OS Independent",],package_dir={"": "src"}, # 这里有坑,如果有两个src目录好像会有问题,直接不指定改参数,下面不指定where就没问题,后续再搞清楚原因packages=setuptools.find_packages(where="src"),python_requires=">=3.6",
)
创建README.md
安装软件包
方式一
打包先上传到pypi公有库,然后直接pip install
方式二
直接把代码上传到git仓库,github,gitlab,gitee都行,然后通过以下命令安装
- pip install git+<git仓库地址>
- pip install git+<git仓库地址>@<分支名称># 需要账号密码登录时用以下命令,注意:如果用户名密码包含@字符,需要转义: %40, 如账号为xxx@qq.com, 密码为123456, 仓库地址为https://gitee.com/xxx/xxx.git- pip install git+https://xxx%40qq.com:123456@gitee.com/xxx/xxx.git
方式三
通过pypiserver搭建私有库,搭建教程参考pypiserver github地址
python如何打包,实现pip install相关推荐
- # python 报错; pip install 报错;error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Mi
python 报错: pip install 报错:error: Microsoft Visual C++ 14.0 or greater is required. Get it with " ...
- python 报错汇总-- pip install pycrypto
python 报错汇总-- pip install pycrypto 很多新手和老鸟在安装pycrypto时候会报各种错, 废话不多说,直接上: 原因 我也报了文末的错说是VC14什么的,花了差不多三 ...
- 这操作厉害:怎么样发布你的 Python模块给别人 “pip install”
学习Python的朋友应该都知道,当我们需要使用某些功能的时候,都会去安装一些第三方的模块,比如 "pip install requests",感觉都被别人装了,你有没有想过,自己 ...
- 怎么把python代码发给别人_教你装逼了:怎么样发布你的 Python 代码给别人 “pip install”...
我们经常在使用某些功能的时候,都会去安装一些第三方的模块,比如 "pip install requests",感觉逼都被别人装了,你有没有想过,自己搞一个模块,给别人直接 pip ...
- Python查看、修改pip install 默认使用的pip库
一.更改 Python 的 pip install 默认使用的pip库 [方法]只需要将对应python脚本的路径添加到系统环境变量Path中较前的位置即可,这样就可以获得优先级. 1.打开终端,可以 ...
- Python 安装模块 使用pip install xxx很慢的解决方法
使用清华镜像 https://pypi.tuna.tsinghua.edu.cn/simple 比如:pip install -i https://pypi.tuna.tsinghua.edu.cn/ ...
- python安装第三方库太慢_Python 安装第三方库 pip install 安装慢安装不上的解决办法...
今天来说一下,有些刚刚接触python的朋友,在使用pip install安装python 第三方库的过程中 会出现网速很慢,或者是安装下载到中途,停止,卡主,或者是下载报错等问题.如下图: 还有一些 ...
- win10 python 3.7 pip install tensorflow
环境: ide:pyCharm 2018.3.2 pyhton3.7 os:win10 64bit 步骤: 1.确认你的python有没有装pip,有则直接跳2.无则cmd到python安装目录下ea ...
- 将Python文件打包成exe文件(超详细)
首先,我们为什么要把Python文件打包成exe文件? 因为,Python文件需要Python IDE打开 而exe,就是一个程序,双击就开了! 岂不是妙哉? 基础准备 首先,打开终端,我们要下载打包 ...
- python文件打包成.exe运行文件
现在用博客的形式记载的,大概也只有IT行业一直持续吧!作为一名IT民工,没有特别多特别深的行业见解,初涉江湖,记录自己走过的路途的风景,日后回望也会觉得清晰:如果有幸能给他人一些启发或者参照,那也算是 ...
最新文章
- 第三章| 3.1文件处理
- C#进行单击操作、单击位置记录、捕获全局左右键单击事件
- 好书 《古代的中医》 《麦肯锡卓越工作方法》
- 兴趣部落的 Git 迁移实践
- C++创建二维数组和矩阵
- 最全面的百度地图JavaScript离线版开发
- gpu云服务器运行游戏_GPU云服务器可以挂载大型游戏吗?
- hadoop 计数器
- antdesignvue upload vue3个人笔记待更新
- MOSS2007服务器端的安装与基本配置
- 学前端有什么好方法,怎么才能更快学会前端?
- java只读xml文件头_为了生成只读的接口和xml,并命名结尾为MapperR.java和MapperR.xml...
- 学生选课系统代码-2view视图层代码【MVC--v】代码
- Debian 鼠标左右手
- 四叶草clover配置工具Clover Configurator 5.4.4.0汉化版
- Android 神兵利器之通过解析网页获取到的API数据合集,可拿来就用
- app下载 微信扫码打开 提示用户用浏览器打开
- 小区门口的健身房,就是韭菜收割厂
- 小黄鸡.Net版(Simsimi.Net)
- tensorflow padded_batch的注意事项
热门文章
- 趣学算法--贪心算法
- 移动卡增强信号的服务器,增强手机4g信号小方法(解决电信4g网络不稳定)
- 学习SPRING在春天 - Learn Spring in spring(二)
- 使用 Pytesseract 进行光学字符识别
- Python自学之路第十八步——异常
- 计算机未安装OCR应用程序,电脑应用指南 篇四:天若OCR使用指南(扫描图片转文字)...
- [元带你学NVMe协议] ZNS 架构: 解决传统SSD问题的高性能存储栈设计
- 一位上海土著 90 后,教你用 Python 赚到人生第一桶金
- Windows并发异步编程(1)JAVA多线程
- 默纳克系统电梯服务器怎么封超载,默纳克系统电梯工作原理说明(三)