目录

  • 官方地址
  • 打包流程
    • 创建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相关推荐

  1. # 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 " ...

  2. python 报错汇总-- pip install pycrypto

    python 报错汇总-- pip install pycrypto 很多新手和老鸟在安装pycrypto时候会报各种错, 废话不多说,直接上: 原因 我也报了文末的错说是VC14什么的,花了差不多三 ...

  3. 这操作厉害:怎么样发布你的 Python模块给别人 “pip install”

    学习Python的朋友应该都知道,当我们需要使用某些功能的时候,都会去安装一些第三方的模块,比如 "pip install requests",感觉都被别人装了,你有没有想过,自己 ...

  4. 怎么把python代码发给别人_教你装逼了:怎么样发布你的 Python 代码给别人 “pip install”...

    我们经常在使用某些功能的时候,都会去安装一些第三方的模块,比如 "pip install requests",感觉逼都被别人装了,你有没有想过,自己搞一个模块,给别人直接 pip ...

  5. Python查看、修改pip install 默认使用的pip库

    一.更改 Python 的 pip install 默认使用的pip库 [方法]只需要将对应python脚本的路径添加到系统环境变量Path中较前的位置即可,这样就可以获得优先级. 1.打开终端,可以 ...

  6. Python 安装模块 使用pip install xxx很慢的解决方法

    使用清华镜像 https://pypi.tuna.tsinghua.edu.cn/simple 比如:pip install -i https://pypi.tuna.tsinghua.edu.cn/ ...

  7. python安装第三方库太慢_Python 安装第三方库 pip install 安装慢安装不上的解决办法...

    今天来说一下,有些刚刚接触python的朋友,在使用pip install安装python 第三方库的过程中 会出现网速很慢,或者是安装下载到中途,停止,卡主,或者是下载报错等问题.如下图: 还有一些 ...

  8. win10 python 3.7 pip install tensorflow

    环境: ide:pyCharm 2018.3.2 pyhton3.7 os:win10 64bit 步骤: 1.确认你的python有没有装pip,有则直接跳2.无则cmd到python安装目录下ea ...

  9. 将Python文件打包成exe文件(超详细)

    首先,我们为什么要把Python文件打包成exe文件? 因为,Python文件需要Python IDE打开 而exe,就是一个程序,双击就开了! 岂不是妙哉? 基础准备 首先,打开终端,我们要下载打包 ...

  10. python文件打包成.exe运行文件

    现在用博客的形式记载的,大概也只有IT行业一直持续吧!作为一名IT民工,没有特别多特别深的行业见解,初涉江湖,记录自己走过的路途的风景,日后回望也会觉得清晰:如果有幸能给他人一些启发或者参照,那也算是 ...

最新文章

  1. 第三章| 3.1文件处理
  2. C#进行单击操作、单击位置记录、捕获全局左右键单击事件
  3. 好书 《古代的中医》 《麦肯锡卓越工作方法》
  4. 兴趣部落的 Git 迁移实践
  5. C++创建二维数组和矩阵
  6. 最全面的百度地图JavaScript离线版开发
  7. gpu云服务器运行游戏_GPU云服务器可以挂载大型游戏吗?
  8. hadoop 计数器
  9. antdesignvue upload vue3个人笔记待更新
  10. MOSS2007服务器端的安装与基本配置
  11. 学前端有什么好方法,怎么才能更快学会前端?
  12. java只读xml文件头_为了生成只读的接口和xml,并命名结尾为MapperR.java和MapperR.xml...
  13. 学生选课系统代码-2view视图层代码【MVC--v】代码
  14. Debian 鼠标左右手
  15. 四叶草clover配置工具Clover Configurator 5.4.4.0汉化版
  16. Android 神兵利器之通过解析网页获取到的API数据合集,可拿来就用
  17. app下载 微信扫码打开 提示用户用浏览器打开
  18. 小区门口的健身房,就是韭菜收割厂
  19. 小黄鸡.Net版(Simsimi.Net)
  20. tensorflow padded_batch的注意事项

热门文章

  1. 趣学算法--贪心算法
  2. 移动卡增强信号的服务器,增强手机4g信号小方法(解决电信4g网络不稳定)
  3. 学习SPRING在春天 - Learn Spring in spring(二)
  4. 使用 Pytesseract 进行光学字符识别
  5. Python自学之路第十八步——异常
  6. 计算机未安装OCR应用程序,电脑应用指南 篇四:天若OCR使用指南(扫描图片转文字)...
  7. [元带你学NVMe协议] ZNS 架构: 解决传统SSD问题的高性能存储栈设计
  8. 一位上海土著 90 后,教你用 Python 赚到人生第一桶金
  9. Windows并发异步编程(1)JAVA多线程
  10. 默纳克系统电梯服务器怎么封超载,默纳克系统电梯工作原理说明(三)