文章目录
一、介绍
在上传本人写的python包到pypi的过程中我踩了很多很多的坑,遇到了很多很多的问题,
各种400、403,于是便有了本编文章,以记录下来,防止更多的小白踩坑
二、整体流程
(一)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",
]
)
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
(2)安装twine
pip install twine
(三)准备上传
1. 构建发布包
python setup.py sdist bdist_wheel
需要保证终端的当前路径下有setup.py文件(也就是说,当前应该处于项目路径下)
2. 上传包
twine upload dist/*
根据提示输入
用户名
和密码
[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