详细步骤 | 打包制作自己的 Python 模块包并上传到 Pip 源 PyPI

这篇具有很好参考价值的文章主要介绍了详细步骤 | 打包制作自己的 Python 模块包并上传到 Pip 源 PyPI。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本文介绍如何打包一个简单的 Python 项目,以及如何将其上传到Python包索引平台(PyPI),供他人使用 pip install xxx 指令安装。

一、准备构建包的文件

文件目录结构:

packaging_tutorial/
├── pyproject.toml
├── src/
│   └── example_package_YOUR_USERNAME_HERE/
│       ├── __init__.py
│       └── example.py
├── LICENSE 
├── MANIFEST.in
└── README.md

说明:packaging_tutorial 可以是任意的目录名,pyproject.toml 是打包配置文件,src 里面存放的就是你的程序代码,example_package_YOUR_USERNAME_HERE 需要改成你期望发布的模块包名(官方建议是在包名后面加上自己的用户名,防止和现有库名重复),LICENSE 是许可信息,MANIFEST.in 是非必需的,如果需要打包代码文件夹以外的文件要在这里面配置,README.md 就是 readme 文件,也是非必需。

1.1 pyproject.toml

pyproject.toml 里可以配置包名、项目依赖等信息:

[project]
name = "example_package_YOUR_USERNAME_HERE"
version = "0.0.1"
authors = [
  { name = "Example Author", email = "author@example.com" },
]
dependencies = []
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project.urls]
"Homepage" = "https://github.com/pypa/sampleproject"
"Bug Tracker" = "https://github.com/pypa/sampleproject/issues"

其中,name 和前面的“目录结构”里的 example_package_YOUR_USERNAME_HERE 一致,该成你的模块包名。version 是待构建模块包的版本号。authors 是作者信息,可以添加多个作者。dependencies 可以添加项目依赖的第三方库的信息,在安装时会自动安装这些依赖库。description 是模块描述。readme 指定readme文件,较长的描述可以写在 readme 文件里。requires-python 是模块依赖的 Python 版本号。classifiers 指定 编程语言、许可证、操作系统的信息,基本就只用改 License,有严格的写法要求,具体可以查看:https://pypi.org/classifiers/。

build-system 选择构建后端,支持 Hatchling、setuptools、Flit、PDM

# Hatchling
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
# setuptools
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
# Flit
[build-system]
requires = ["flit_core>=3.4"]
build-backend = "flit_core.buildapi"
# PDM
[build-system]
requires = ["pdm-backend"]
build-backend = "pdm.backend"

project.urls 里可以添加一些链接,如bug反馈、文档等…

例如:

[project]
name = "bhsenti"
version = "0.0.1"
authors = [
    { name = "bhnw", email = "bhshare.cn@gmail.com" },
]
dependencies = ['transformers>=4.27.1', 'onnxruntime']
description = "基于三分类的中文情感分析"
readme = "README.md"
requires-python = ">=3"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
    "Operating System :: OS Independent",
]
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project.urls]
"Homepage" = "https://github.com/yaokui2018"
"Bug Tracker" = "https://github.com/yaokui2018/bhsenti/issues"

1.2 MANIFEST.in

可以在里面配置需要 添加 或者 排除 的Python代码以外的文件。格式示例如下:

# 包含所有文件和目录
include *

# 排除不需要的文件和目录
exclude some_directory/
exclude *.txt

1.3 LICENSE

LICENSE 用来告诉安装软件包的用户,他们可以根据条款使用你的软件包。请参阅https://choosealicense.com/。选择许可后,复制许可文本到 LICENSE 文件。

  • MIT License
    简短而直接,允许他人对你的项目几乎做任何事情,包括制作和分发闭源版本。
    对共享改进非常友好,因为它允许他人自由地使用、修改和分发你的代码。
  • GNU GPLv3
    允许他人几乎做任何事情,但不允许分发闭源版本,要求任何基于你的项目构建的派生作品必须使用相同的许可证发布。
    与 MIT 许可证相比更加强调对开源共享的支持,鼓励共享改进并保证了代码的开放性。
  • Apache License 2.0
    允许他人几乎做任何事情,包括制作、使用和分发闭源版本,但在使用你的专利时提供了一些额外的保护。
    要求在派生作品中包含原始许可和免责声明。

例如:选择 MIT License

Copyright (c) 2018 The Python Packaging Authority

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

1.4 README.md

就是 readme 文件了…没啥好解释的

# Example Package

This is a simple example package. You can use
[GitHub-flavored Markdown](https://guides.github.com/features/mastering-markdown/)
to write your content.

二、构建包

2.1 安装 build 库

pip install --upgrade build

2.2 打包构建

终端里切换到 pyproject.toml 文件所在目录,运行下面的指令:

python -m build

pypi 创建api token,Python,python,pip,开发语言
等待构建完成,提示 Successfully built 的提示,当前目录即会多出一个 dist 文件夹,里面有两个文件,即是打包好的文件。

dist/
├── example_package_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl
└── example_package_YOUR_USERNAME_HERE-0.0.1.tar.gz

tar.gz 文件是一个源发行版,而 .whl 文件是构建发行版。较新的pip版本会优先安装构建后的发行版,但如果需要的话会回退到源代码发行版。你应该始终上传源代码发行版,并为你的项目兼容的平台提供构建后的发行版。在这种情况下,我们的示例包在任何平台上都与Python兼容,因此只需要一个构建的发行版。

如果本地使用,就可以直接 pip install xxxxxx.whl 安装模块包进行测试了。

三、上传模块包到PyPI

3.1 注册 PyPI 账号

在 PyPI 上注册一个帐号:https://pypi.org/account/register/。
按提示完成电子邮件地址验证、以及一些安全设置。

3.2 创建 API Token

访问:https://pypi.org/manage/account/token/,按下图步骤创建 PyPI API token.。

pypi 创建api token,Python,python,pip,开发语言
pypi 创建api token,Python,python,pip,开发语言

3.3 创建 .pypirc 文件

在系统 HOME 目录创建 .pypirc 配置文件:

  • Linux : ~/.pypirc
  • WindowsC:\Users\用户名\.pypirc

文件内容如下:

[distutils]
index-servers=pypi

[pypi]
repository = https://upload.pypi.org/legacy/
username = __token__
password = <Token>

其中,<Token> 改成上一步创建的 token(以pypi-开头的)。如果觉得不安全也可以 username 和 password 两行删除,在后面的上传过程中会提示让手动输入。

3.4 安装 twine 库

pip install --upgrade twine

3.5 上传模块包

终端里运行下面指令上传 dist 目录的模块包到 PyPI 平台。

twine upload dist/*

pypi 创建api token,Python,python,pip,开发语言

访问下面的链接就可以… 剩下的应该都懂了 over

pypi 创建api token,Python,python,pip,开发语言


附录:
本文构建的模块包源码:https://github.com/yaokui2018/bhsenti
官方详细教程:https://packaging.python.org/en/latest/tutorials/packaging-projects/文章来源地址https://www.toymoban.com/news/detail-842976.html

到了这里,关于详细步骤 | 打包制作自己的 Python 模块包并上传到 Pip 源 PyPI的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#制作自己的打包工具

    C#制作自己的打包工具,运用到的技术其实就是用的 C# 内部的 “动态编译” 技术。 下面简单的叙述其中的流程: 1.你的打包工具自己有一个exe的项目,当然为了操作,你可以是Winfrom的项目; 2.你还需新建一个你打包后,生成的一个安装包的exe的项目,你还可以是Winfrom的项

    2023年04月21日
    浏览(32)
  • 【python】之pyinstaller模块,python程序打包成一个可执行exe 文件(超详细)!

    PyInstaller是一个在Windows、GNU/Linux、macOS等平台下将Python程序冻结(打包)为独立可执行文件的工具, 用于在未安装Python的平台上执行Python编写的应用程序 使用pip接口进行安装 1.打开命令行: 切换到要转换的python文件路径,输入上述指令。 (1)-F: 只生成一个单个文件(只有一个

    2024年02月12日
    浏览(62)
  • 用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细,万字详述)

    目录 一、打包前置知识 1.1 什么是 exe 可执行文件? 1.2 为什么要将 Python 程序打包为 exe 可执行文件? 1.3 为什么 Python 程序不能直接运行呢? 1.4 我们用什么来打包 Python 文件呢?  1.5 打包有哪几种分类呢? 二、打包的方法 2.1 简单打包 2.1.1 前置 2.1.2 直接打包 2.1.3 稍微“加

    2024年02月04日
    浏览(60)
  • 根据自己修改后的容器制作镜像并上传docker hub

    要将自己的镜像上传到Docker Hub,可以按照以下步骤进行操作: 首先,确保已经在本地构建好了需要上传的 Docker 镜像。如果还没有构建,可以使用 docker build 命令来创建镜像。 登录到 Docker Hub 账号。打开终端或命令提示符,运行以下命令并输入相应的用户名和密码: docker

    2024年01月21日
    浏览(64)
  • 【GitHub】Pycharm本地项目打包上传到Github仓库的操作步骤

    通过 Ctrl+Alt+S 快捷组合键的方式,打开 设置 ,导航到版本控制一栏中的 Git ,在Git可执行文件路径中,输入 Git.exe 。 按照此顺序,依次点击,完成测试。输出如图标④的结果,即可完成测试。 输出此结果,配置Git成功,如本地未安装Git,需自行安装。 此栏中不输入任何配置

    2024年02月12日
    浏览(56)
  • 原生HTML+CSS+JS制作自己的导航主页(前端大作业,源码+步骤详解)

    链接:https://pan.baidu.com/s/1uaRCJXyIrY56NXabau4wjw?pwd=LDL6 提取码:LDL6 咕咕了好久啦,今天使用原生HTML+CSS+JS做一个很简单的个人定制的导航主页吧! 先看下完整的效果图吧! 接下来的文章将逐步带领大家制作,现在太晚了,就精简了下,删除了部分动画效果,项目整体非常简单!

    2024年01月22日
    浏览(49)
  • 深度学习Docker使用, (Pytorch/TensorRT/DeepStream),标记上传制作自己的DockerHub

    https://docs.docker.com/engine/install/ubuntu/ Set Up Install Docker Engine 安装nvidia cuda tookit 加入了之后重启了才能使用 Docker Root Dir: /data/docker 我的docker数据的挂载就是在/data/docker下面的 https://catalog.ngc.nvidia.com/containers 全部镜像都是在NVIDIA官方找的 登陆自己的账号 标记自己的镜像 在这里面

    2024年02月13日
    浏览(43)
  • 【Maven】maven引入第三方jar包并打包

    idea中的springboot项目引用第三方jar包,打包时将其引入 本文参照官网:http://maven.apache.org/ 第一种:在pom文件引入jar包的目录 1.选择File下的project Structure 2.选择Module,选择项目模块,选择Dependencies下的加号:点击JARs or Directories…: 3.选择你jar包所在的位置,点击OK,点击Apply,此时已

    2024年02月16日
    浏览(57)
  • 关于打包多模块SpringBoot项目并通过宝塔上传服务器

    打包 —— 如何打包多模块项目,参考b站up主:[喜欢编程的代先生] 的视频 总结:1. 对着视频里看一下父模块和各个子模块pom.xml文件关于打包工具的依赖是否正确。2. 从最底层开始打包,逐层向上,最后再合并打包。 部署 —— 打包好后,先把jar包上传到文件夹 运用java项目

    2024年02月11日
    浏览(43)
  • HbuilderX打包成apk安卓安装包并装到手机上

    将开发好的项目前端代码,打包成html、css、js等静态资源,打包后会自动生成/dist文件夹。不管用什么环境开发的项目,都可以生成这些静态资源。 本次分享需要用到非常重要的工具HbuilderX,这是dcloud.io出口的一款非常有用的前端开发工具,内置发布成为app的功能。 官方下载

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包