欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 【Python】2.获取pypi的api token 并把自己写好的库上传到pypi(保姆级图文)

【Python】2.获取pypi的api token 并把自己写好的库上传到pypi(保姆级图文)

2025/2/26 6:07:35 来源:https://blog.csdn.net/u011027547/article/details/143482496  浏览:    关键词:【Python】2.获取pypi的api token 并把自己写好的库上传到pypi(保姆级图文)

目录

    • 准备好你的2fa应用
    • 项目结构
      • README.md
      • LICENSE.txt
    • 安装必备的工具库
    • 打包库
    • 上传到 PyPI
      • 获取帐号Api
      • 上传
      • 上传失败
    • 修改项目名重新打包上传
    • 解释一下打包的后缀名
    • 清华源
    • 总结


欢迎关注 『Python』 系列,持续更新中
欢迎关注 『Python』 系列,持续更新中

【Python】自己封装一个库 打包库,调用库,输出库信息,编写库的说明文档(测试代码+图文)
延续前文,自己封装好库后进行上传,为开源贡献

在这里插入图片描述

准备好你的2fa应用

后面申请api token需要用到

项目结构

和前文的区别在于新建了一个README.md文件,存放你对于这个库的说明,新建了一个LICENSE.txt,存放你对于这个库的开源协议

├─📁 csdn/
│ ├─📁 __pycache__/
│ │ ├─📄 __init__.cpython-38.pyc
│ │ └─📄 aFunc.cpython-38.pyc
│ ├─📄 __init__.py
│ └─📄 aFunc.py
├─📁 csdn/.egg-info
│ ├─📄 dependency_links.txt
│ ├─📄 PKG-INFO
│ ├─📄 SOURCES.txt
│ └─📄 top_level.txt
├─📁 dist/
│ └─📄 csdn-0.1.tar.gz
├─📄 LICENSE.txt
├─📄 README.md
└─📄 setup.py

README.md

## 测试打包上传
1. XXXXXXXXXX

LICENSE.txt

注意修改为你自己的 Copyright (c) 2024-present mzh 2024是年份 mzh是作者名

Copyright (c) 2024-present mzhPermission 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.

安装必备的工具库

pip install setuptools twine

打包库

python setup.py sdist bdist_wheel

上传到 PyPI

获取帐号Api

  • 注册好账号后在用户设置(account setting) 如果你有红色提示 说明你要开启身份验证,点击立即为您的帐户启用它

在这里插入图片描述

  • 如果你没有生成代码需要先生成一个,一般来说注册帐号的时候就会生成一个

在这里插入图片描述
输入密码后就能生成了,这几行每一行都是一个代码,输入的时候输入任意一个就行
在这里插入图片描述

  • 我已经有了生成代码了 直接使用生成代码

在这里插入图片描述
选择任意一个输入
在这里插入图片描述

在这里插入图片描述
多个恢复代码:在启用 2FA 时,PyPI 会提供多个恢复代码作为备用方式。这些代码是为了确保你在丢失访问身份验证器(例如 Google Authenticator)时,仍然能够恢复账户访问。
使用后的恢复代码:一旦你使用了其中一个恢复代码,它就会被标记为 “已使用”,因此不能再用于任何操作。
其他恢复代码是否有效:如果你没有使用其他恢复代码,那么这些代码仍然是有效的。每个恢复代码都可以在你无法使用身份验证器时作为备用方式使用,但每次只能使用一次。

在这里插入图片描述
如果你没有2fa应用,可以在这里下载

https://pypi.org/help/#totp

在这里插入图片描述
反正就是用你的2fa应用扫码,然后得到一个数据动态密码输入到框中即可
在这里插入图片描述
添加成功
在这里插入图片描述

  • 你发现你可以申请api了
    在这里插入图片描述
    在这里插入图片描述
  • 你的api
    在这里插入图片描述
    C:\Users\<your-username>\.pypirc新建了一个.pypirc,这里面的your-username是你的系统用户名,用来存放上传pypi或者其他源的api认证配置,在.pypirc中写入这样可以避免以后上传时总是要手动输入api,这相当于在你电脑系统中设置了默认的密码
[distutils]
index-servers =
pypi[pypi]
repository: https://upload.pypi.org/legacy/
username = __token__
password = 你的api

上传

twine upload dist/*

在这里插入图片描述
这一步需要一个账户的api token,因为新版的pypi认为账密登录不安全,如果你前面没有配置api文件,这步就要输入api

上传失败

命令中加入verbose显示具体的错误信息

twine upload --verbose dist/*

提示说没有权限

(.venv) PS G:\gitWorkSpace\create_moudle> twine upload --verbose dist/*
INFO     Using configuration from C:\Users\90668\.pypirc
Uploading distributions to https://upload.pypi.org/legacy/
INFO     dist\csdn-0.1-py3-none-any.whl (2.3 KB)
INFO     dist\csdn-0.1.tar.gz (1.9 KB)
INFO     password set from config file
INFO     username: __token__
INFO     password: <hidden>
Uploading csdn-0.1-py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.9/4.9 kB • 00:00 • ?
INFO     Response from https://upload.pypi.org/legacy/:403 The user 'beichen' isn't allowed to upload to project 'csdn'. See https://pypi.org/help/#project-name for more        information.
INFO     <html><head><title>403 The user 'beichen' isn't allowed to upload to project 'csdn'. See https://pypi.org/help/#project-name for    more information.</title></head><body><h1>403 The user 'beichen' isn't allowed to upload to project 'csdn'. See https://pypi.org/help/#project-name for more  information.</h1>Access was denied to this resource.<br/><br/>The user &#x27;beichen&#x27; isn&#x27;t allowed to upload to project &#x27;csdn&#x27;. Seehttps://pypi.org/help/#project-name for more information.</body></html>
ERROR    HTTPError: 403 Forbidden from https://upload.pypi.org/legacy/The user 'beichen' isn't allowed to upload to project 'csdn'. See https://pypi.org/help/#project-name for moreinformation.

原因可能如下:

  1. 确认项目名称是否已经被占用,PyPI 上的项目名是唯一的。如果 csdn 这个名称已经被别人注册了,你将无法上传到这个名称下。你可以在 PyPI 上搜索 csdn 项目,查看它是否已经存在。如果该名称已经被占用,解决办法是更改你的包名称。
  2. 检查权限设置.如果 csdn 项目确实是你的项目,可能是你没有正确的权限进行上传。确保你使用的是正确的 PyPI 用户账户。你在上传时使用的是 token,表示你正在使用 API Token 进行上传。

1.你可以通过以下步骤确保你的 API Token 是有效的并且与正确的账户关联:登录到 PyPI,进入 Account settings(账户设置)页面。
2.在 API tokens 部分检查是否已经生成了适当的 API Token,并确保它具有上传该项目的权限。
3.确保 .pypirc 配置文件中使用的是正确的 token。检查 username 和 password 是否正确:

  1. 检查项目的所有者或管理权限如果你没有权限上传,你可以检查是否是项目的所有者或管理者。如果是合作者,请确认你是否被授予了上传权限。如果你是团队的一员,需要请求管理员将你添加为该项目的上传者。

修改项目名重新打包上传

很显然,csdn这个项目包早就有人上传了~~~,我们要改名了

setup.py,找到并修改 name 字段:

from setuptools import setup, find_packagessetup(name='csdn-mzh',version='0.1',packages=find_packages(),
)

重新打包,删掉旧包csdn只留下新包

python setup.py sdist bdist_wheel

在这里插入图片描述

上传新的包

twine upload dist/*
  • 上传成功,访问https://pypi.org/project/csdn-mzh/0.1/#description查看
    在这里插入图片描述

解释一下打包的后缀名

  1. py3 — Python 版本
    这个部分表示该包是为 Python 3 设计的,而不是 Python 2。py3 表示该包是兼容 Python 3 及更高版本的,但不适用于 Python 2。如果一个包支持多个 Python 版本,通常会看到类似 py2.py3py3 这样的标签。

    • py3 表示仅支持 Python 3。
    • 如果支持 Python 2 和 3,通常会看到 py2.py3
    • 对于某些特殊情况,可能会看到类似 cp37cp38,表示支持特定的 Python 版本(比如 Python 3.7 或 3.8)。
  2. none — ABI (Application Binary Interface)
    none 表示这个包不依赖于任何特定的 ABI(应用程序二进制接口),即它与 Python 的特定二进制实现无关。大多数纯 Python 包通常会使用 none,因为它们不包含与 Python 解释器相关的二进制代码。只有那些包含 C 扩展或其他本地代码的包才会依赖特定的 ABI。

    例如:

    • cp37 可能表示该包需要 CPython 3.7 版本的 ABI(比如 C 扩展依赖)。
    • abi3 是一个特殊的标签,表示包使用了跨多个 Python 版本的 ABI。
  3. any — 平台
    any 表示这个包不依赖于特定的操作系统或硬件架构。它是一个跨平台的包。换句话说,它是纯 Python 包,没有平台依赖性,因此可以在任何平台上使用(如 Windows、macOS 或 Linux)。

    • any 表示该包没有平台依赖性,适用于任何操作系统和架构。
    • 如果一个包与特定平台相关,可能会看到如 win32linux_x86_64macosx_10_9_intel 这样的标签,表示包仅适用于这些特定平台。
  • py3 表示包支持 Python 3。
  • none 表示包没有特定的 ABI 依赖(即纯 Python 包)。
  • any 表示包没有平台依赖,适用于任何平台。

清华源

清华源会间隔一段时间自动同步pypi的库

https://pypi.tuna.tsinghua.edu.cn/simple/你的库名
https://pypi.tuna.tsinghua.edu.cn/simple/csdn-mzh/

在这里插入图片描述

总结

大家喜欢的话,给个👍,点个关注!继续跟大家分享敲代码过程中遇到的问题!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2024 mzh

Crated:2024-11-04

欢迎关注 『Python』 系列,持续更新中
欢迎关注 『Python』 系列,持续更新中
【Python安装第三方库一行命令永久提高速度】
【使用PyInstaller打包Python文件】
【更多内容敬请期待】


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com