上传到 PyPI
将软件包上传到 PyPI(Python Package Index),您需要遵循以下步骤:
-
准备软件包:确保您的软件包满足以下要求:
- 包含一个
setup.py文件,用于描述软件包的元数据和依赖项。 - 包含软件包的源代码和必要的文件。
- 确保您的软件包具有一个唯一的名称,以避免与其他软件包冲突。
- 包含一个
-
注册账户:如果您还没有 PyPI 账户,请访问 https://pypi.org 并注册一个账户。
-
安装 twine:在上传软件包之前,您需要安装
twine工具。可以使用以下命令通过 pip 安装它:pip install twine -
构建软件包:在准备好软件包的目录中,打开命令行终端,并使用以下命令构建软件包:
python setup.py sdist bdist_wheel这将生成一个
dist目录,并在其中包含构建的软件包文件。 -
上传软件包:使用以下命令将软件包上传到 PyPI:
twine upload dist/*这将提示您输入 PyPI 的用户名和密码。输入您在步骤 2 中注册的凭据。
-
等待上传完成:上传过程可能需要一些时间,具体取决于您的软件包的大小和网络连接速度。
-
验证上传:上传完成后,您可以访问您的 PyPI 网页(https://pypi.org)并搜索您的软件包的名称,以确保它已成功上传。
请注意,上传到 PyPI 是一个开放的过程,任何人都可以下载和使用您的软件包。因此,在上传软件包之前,请确保您的代码和依赖项是安全且可靠的。同时,遵循良好的软件包管理和版本控制实践,以确保您的软件包的稳定性和可维护性。
setup.py 文件
setup.py 文件是用于构建和安装 Python 包的脚本文件,它使用 Distutils 或 setuptools 库来定义包的元数据和相关配置。以下是创建 setup.py 文件的一般步骤:
-
在你的项目根目录下创建一个新的文件,并将其命名为
setup.py。 -
打开
setup.py文件,并使用 Python 代码编辑器或文本编辑器来编辑它。 -
导入
setuptools(如果你使用 setuptools)或distutils.core(如果你使用 Distutils)模块,以便在脚本中使用相应的函数和类。# 使用 setuptools from setuptools import setup, find_packages# 或者使用 Distutils from distutils.core import setup -
在
setup()函数中定义你的包的元数据和相关配置。以下是一些常见的配置选项:name:包的名称。version:包的版本号。description:包的描述信息。author:作者姓名。author_email:作者的电子邮件地址。url:包的官方网站或代码仓库链接。packages:要包含的包列表。install_requires:依赖的其他 Python 包。scripts:要安装的可执行脚本文件。classifiers:包的分类标签,用于指定包的特性和用途。- 其他可用的选项,请参考相应的文档。
以下是一个示例
setup()函数的代码:from setuptools import setup, find_packagessetup(name='your-package-name',version='1.0.0',author='Your Name',author_email='your@email.com',description='Description of your package',packages=find_packages(), # 自动查找并包含所有的包install_requires=['dependency1','dependency2',],classifiers=['Development Status :: 5 - Production/Stable','Intended Audience :: Developers','License :: OSI Approved :: MIT License','Programming Language :: Python :: 3','Programming Language :: Python :: 3.6','Programming Language :: Python :: 3.7','Programming Language :: Python :: 3.8',], )
对于 Python 自带的标准库,通常不需要在 install_requires 中显式列出依赖项。标准库是随 Python 安装的一组内置库,无需通过第三方包管理工具进行安装。
在编写 install_requires 时,主要是列出您的软件包所依赖的第三方库或模块。这些是在安装您的软件包之前需要用户手动安装或自动安装的外部依赖项。
例如,如果您的软件包依赖于 requests 和 numpy 这两个第三方库,但不依赖于任何 Python 标准库,您的 install_requires 可以这样写:
install_requires=['requests','numpy',
]
在使用 pip 安装您的软件包时,pip 会自动检查并安装这些列出的依赖项(如果它们还没有被安装)。但是,对于 Python 标准库,不需要在 install_requires 中显式列出,因为它们已经是 Python 的一部分,无需额外安装。
请注意,在编写 install_requires 时,最好使用具体的版本要求,以确保在安装依赖项时能够获得一致和可预测的结果。例如,可以指定特定的版本号或版本范围,如 'requests>=2.0' 或 'numpy>=1.15,<2.0'。这有助于避免由于依赖项的升级或变化而导致的不兼容性问题。
如果您在运行 python setup.py bdist_wheel 时遇到 "error: invalid command 'bdist_wheel'" 错误,这通常表示您的环境缺少必要的依赖项或工具。
要解决此问题,请按照以下步骤进行操作:
-
确保您已经安装了
wheel包。您可以使用以下命令通过 pip 安装它:pip install wheel -
如果您已经安装了
wheel,但仍然遇到错误,请确保您的 Python 环境中已经安装了setuptools包,并且它是最新版本。您可以使用以下命令升级setuptools:pip install --upgrade setuptools -
如果上述步骤仍然无法解决问题,请尝试使用
python3命令替代python,并使用python3 setup.py bdist_wheel运行命令,以确保您正在使用正确的 Python 版本。

https://pypi.org/project/lxs-SimpleTools/1.0.2/#description
相关文章:
上传到 PyPI
将软件包上传到 PyPI(Python Package Index),您需要遵循以下步骤: 准备软件包:确保您的软件包满足以下要求: 包含一个 setup.py 文件,用于描述软件包的元数据和依赖项。包含软件包的源代码和必要…...
盛最多水的容器(双指针)
解题思路: 1,暴力解法(超时) 我们可以使用两层for循环进行遍历。找到那个最大的面积即可,这里我就不写代码了,因为写了也是超时。 2,双指针法 先定义两个指针一个在最左端,一个在…...
【深度学习】实验3 特征处理
特征处理 python 版本 3.7 scikit-learn 版本 1.0.2 1.标准化 from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import MinMaxScaler from matplotlib import gridspec import numpy as np import matplotlib.pyplot as plt cps np.random.…...
MoneyPrinter国内版改造
背景: MoneyPrinter 是一个自动生成短视频的开源项目。只需要输入短视频主题,然后就可以生成视频。 在国内环境运行时,框架中使用的youtube、抖音文字转语音等功能无法使用,需要对框架进行国内版改造,使其使用国内网络…...
C++ 派生类的引入与特性
一 继承与派生 从上面的例子可以看出: 继承:一旦指定了某种事物父代的本质特征,那么它的子代将会自动具有哪些性质。这就是一种朴素的可重用的概念。 派生:而且子代可以拥有父代没有的特性,这是可扩充的概念。 1 C 的…...
Poe是什么?怎样订阅Poe?
Poe(全称“开放探索平台”,Platform for Open Exploration)是一款由Quora开发的移动应用程序,于2022年12月推出。该应用程序内置建基于AI技术的聊天机器人,可供用户向机器人询问专业知识、食谱、日常生活,甚…...
基于FPGA的视频矩阵切换方案
一、单个显示设备的系统方案:会议室只有1个显示设备 会议室的信号源有很多,但是显示设备只有1个,这个时候最佳方案是使用切换器。 (1)切换器(控制方式:遥控器、软件、机箱面板、中控ÿ…...
.NET周刊【5月第1期 2024-05-05】
国内文章 一个开源轻量级的C#代码格式化工具(支持VS和VS Code) https://www.cnblogs.com/Can-daydayup/p/18164905 CSharpier是一个开源、免费的C#代码格式化工具,特点是轻量级且依赖Roslyn引擎重构代码格式。支持的IDE包括Visual Studio …...
springcloud -nacos实战
一、nacos 功能简介 1.1.什么是Nacos? 官方简介:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 Nacos的关键特性包括: 服务发现和服务健康监测动态配置服务动态DNS服务服务及其元数…...
第十五章 数据管理成熟度评估练习
单选题 (每题1分,共19道题) 1、 [单选] 下列选项中属于数据管理成熟度2级特征的选项是? A:很少或没有治理;有限的工具集;单个竖井(系统)内定义角色;控件(如果有的话的应用完全不一致);未解决的数据质量问题 B:治理开始出现;引入一致的工具集;定义了一些角色和…...
tcpdump速查表
tcpdump 速查表 -D 列出网络设备 ~]$ sudo tcpdump -D1.eth02.nflog (Linux netfilter log (NFLOG) interface)3.nfqueue (Linux netfilter queue (NFQUEUE) interface)4.any (Pseudo-device that captures on all interfaces)5.lo [Loopback]-i 指定网卡 前面列出的设备可以…...
单元测试与集成测试:软件质量的双重保障
目录 概述 单元测试 集成测试 单元测试的方法 白盒测试 黑盒测试 白盒测试的方法和用例设计 代码审查 集成测试 单元测试工具 结语 在软件开发中,测试是一个不可或缺的环节,它能够帮助我们发现和修复缺陷,确保软件的质量和可靠性。…...
孙宇晨对话大公网:香港Web3政策友好环境示范意义重大
日前,全球知名华文媒体大公网发布《湾区web3大有可为》重磅系列报道。报道通过对中国香港与大湾区其他城市Web3政策、行业创新和生态建设等方面的梳理,以及对行业领袖和重要行业机构的走访,全面展现了在大湾区一体化发展的背景下,Web3等数字经济模式在该地区的长远发展潜力。 …...
Python运维之多线程!!
一、多线程 二、多线程编程之threading模块 2.1、使用threading进行多线程操作有两种方法: 三、多线程同步之Lock(互斥锁) 四、多线程同步之Semaphore(信号量) 五、多线程同步之Condition 六、多线程同步之Event…...
milvus插入数据时,明明不超长,但总是报长度错误?
在处理插入milvus数据时,设置了字段长度为512. 明明考虑了预留,插入的数据中没有这么长的,但还是会有报错 类似:MilvusException: (code0, messagethe length (564) of 78th string exceeds max length (512) 查找max(len(x) for …...
怎么把图片大小缩小到1M?教你几招图片你压缩
当我们的图片数量越来越多的时候,占用的内存也就越来越多,时间长了之后,会导致我们空间不足或者设备比较卡顿,为了缓解这个问题,很多人会选择去删除一些不必要的图片文件,其实还有个方法就是利用图片压缩的…...
python数据分析常见命令
前言 近些天我会整理一些我平时清理csv,excel数据经常用的常见命令来分享给大家学习,大家一起加油! 第一个命令:引入pandas库 pandas库是一个开源的数据分析工具,主要用于数据处理和数据分析。 import pandas as pd 第二个命令…...
等保测评技术方案(五)
(八)漏洞扫描方案 1.参与人员 乙方工程师:谭 然、张 剑等。 范围经过双方确认,此次评估的对象包括: 2.网络设备 IP 地址 设备型号 备注 / / / / / / 以现场测评实际数据为准 3.应用系统 地址 …...
Redis缓存的基本概念和使用
Redis缓存的基本概念和使用 什么是缓存Redis缓存缓存更新策略缓存穿透缓存雪崩缓存击穿缓存工具类封装 什么是缓存 缓存时数据交换的缓冲区,存储数据的临时区,读写性能较好。 例如计算机的三级缓存。CPU的计算速度超过内存的读写速度,为了平…...
MATLAB模拟退火算法、遗传算法、蚁群算法、粒子群算法
概况 模拟退火算法、遗传算法、蚁群算法、粒子群算法等算法,都是属于概率算法,不绝对,不迅速,能用其它方式解决的问题,不要用这些相对复杂的算法,比如有明确的线性关系或者非线性对应关系。这里的概率算法…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
