当前位置:   article > 正文

上传自己写好的python程序到pypi_twine 双重验证 上传 pypi

twine 双重验证 上传 pypi

一、介绍

在上传本人写的python包到pypi的过程中我踩了很多很多的坑,遇到了很多很多的问题,
各种400、403,于是便有了本编文章,以记录下来,防止更多的小白踩坑

二、整体流程

(一)PyPi账号注册

PyPi官网

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(二)上传前准备

1. 文件列表结构

在这里插入图片描述

packaging_mutils 是项目名(名称可修改)
mmutils :包含源代码的程序包(名称可修改)
README.md 关于程序的介绍和说明(名称不建议修改)
setup.py :用于打包的python程序

2. mmutils

在这个下面一定会有一个__init__.py文件,因为这是一个python包

3. setup.py编写

import codecs
import os
from setuptools import setup, find_packages

# these things are needed for the README.md show on pypi (if you dont need delete it)
here = os.path.abspath(os.path.dirname(__file__))

with codecs.open(os.path.join(here, "README.md"), encoding="utf-8") as fh:
    long_description = "\n" + fh.read()

# you need to change all these
VERSION = '版本号'
DESCRIPTION = '简单描述'

setup(
    name="要显示的唯一标识(用于pip install xxx)",
    version=VERSION,
    author="作者",
    author_email="作者的电子邮件",
    description=DESCRIPTION,
    # 长描述内容的类型设置为markdown
    long_description_content_type="text/markdown",
    # 长描述设置为README.md的内容
    long_description=long_description,
    # 使用find_packages()自动发现项目中的所有包
    packages=find_packages(),
    # 许可协议
    license='MIT',
    # 要安装的依赖包
    install_requires=[
        "Faker>=18.7.0",
        "ddddocr>=1.4.7",
        "requests>=2.30.0",
        "loguru>=0.7.0",
        "lxml>=4.9.2",
    ],
    # keywords=['python', 'menu', 'dumb_menu','windows','mac','linux'],
    classifiers=[
        "Development Status :: 1 - Planning",
        "Intended Audience :: Developers",
        "Programming Language :: Python :: 3",
        "Operating System :: Unix",
        "Operating System :: MacOS :: MacOS X",
        "Operating System :: Microsoft :: Windows",
    ]
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

find_packages() : 函数会自动查找项目目录中包含 init.py 文件的子目录,并将这些子目录识别为包。它会递归地遍历子目录,以查找嵌套的包

如果不想使用所有的包,那么可以手动指定
例如:packages=[‘package1’, ‘package2’, ‘package3’]

4. README.md

如果在setup.py中使用了README.md,那么README.md中必须要有内容,否则可能会报错。
如果我记得没错的话,内容为空,会报类型错误

5. 安装依赖包

(1)更新pip包

py -m pip install --upgrade pip
  • 1

(2)安装twine

pip install twine
  • 1

(三)准备上传

1. 构建发布包

python setup.py sdist bdist_wheel
  • 1

需要保证终端的当前路径下有setup.py文件(也就是说,当前应该处于项目路径下)

2. 上传包

twine upload dist/*
  • 1

根据提示输入用户名密码
[Tips] 在密码输入的时候,终端是不会实时显示的
[Tips] 如果你误打误撞开启了“双重身份验证”,那么你就不能通过用户名和密码进行上传,只能通过API令牌的方式上传,这就涉及到了一个文件.pypirc

(四)上传优化

每次都要输入用户名和密码的话既繁琐又不安全,具体可以参考这里

1. 创建 API token

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 创建 .pypirc 文件

我的电脑是windos系统,所以我是在“C:\Users<用户名>”下创建的 .pypirc

[distutils]
  index-servers =
    pypi
    PROJECT_NAME

[pypi]
  username = __token__
  password = 复制的API token
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

三、其他待完善

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/505921
推荐阅读
相关标签
  

闽ICP备14008679号