pypi上传包

1 账号注册

https://test.pypi.org/ # 测试环境

https://pypi.org/ 正式环境

可以先在测试环境测试上传再上传到正式环境

2 固定的目录结构

上穿到pypi 的包的目录结构是固定

example_package
----LICENSE.txt    #版权声明文件
----README.md      #分发包的详细介绍文件
----example_pkg    # 你要上传的代码包
    ----__init__.py
    .......
----setup.py       #为打包做准备的设置文件 ,这个是最关键的
----tests          #测试文件夹,可以没有

----setup.py 样例

import setuptools #导入setuptools打包工具
 
with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()
 
setuptools.setup(
    name="example-pkg-YOUR-USERNAME", # 用自己的名替换其中的YOUR_USERNAME_
    version="0.0.1",    #包版本号,便于维护版本
    author="Example Author",    #作者,可以写自己的姓名
    author_email="author@example.com",    #作者联系方式,可写自己的邮箱地址
    description="A small example package",#包的简述
    long_description=long_description,    #包的详细介绍,一般在README.md文件内
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",    #自己项目地址,比如github的项目地址
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',    #对python的最低版本要求
)

LICENSE文件简述

https://choosealicense.com/ # 许可证官网 可以在上面选择自己需要的复制过来 我这边选择的是MIT

MIT License

Copyright (c) [year] [fullname]

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.

3 打包项目

一般使用setuptools和wheel工具打包生成可上传和分发,并可使用pip安装的包文件

#安装或更新setuotools和wheel
python3 -m pip install  --upgrade setuptools wheel

# 打包并生成tar.gz和whl文件


#以mac为例
cd example_packages
#运行以下命令
python setup.py sdist bdist_wheel

运行完毕后,如果顺利,则会在与setup.py文件同一层级,产生一个dist文件夹,此时文件夹结构如下:

example_package
----LICENSE.txt    #版权声明文件
----README.md      #分发包的详细介绍文件
----example_pkg
    ----__init__.py
----setup.py       #为打包做准备的设置文件
----tests          #测试文件夹,一般用不到
----dist
————————————————

4 上传包至PyPi

在这之前,大家需要首先注册一个test环境的PyPi账号,可通过链接 https://test.pypi.org/account/register/ 进行注册。

然后大家需要在我的→account setting处设置自己用API上传时使用的token信息,工作原理类似git hub,快速传送门 https://test.pypi.org/manage/account/#api-tokens。

好了,一切准备就绪

1 安装twine
首先使用以下命令安装或更新twine

python3 -m pip install --user --upgrade twine

2 使用twine上传
此处,我们将dist下的分发文件,先上传到PyPi的测试环境,上传完毕后,可以在测试环境的PyPi自己的主页,your projects处查看并管理(包括版本信息等,一般就是setup.py文件内设置的信息)

注意,在终端或cmd窗内运行以下命令时,均需保证当前文件夹路径与setpy.py一致

python3 -m twine upload --repository testpypi dist/*
当运行以上命令后,一般会出现Enter your username和Enter your password提示,其中username输入__token__,password输入token值(使用测试环境的token值),然后按Enter即可

3.2 正式上传至PyPi
当在测试环境上传成功后,便可上传至PyPi的生产环境

python3 -m twine upload dist/*
当运行以上命令后,一般会出现Enter your username和Enter your password提示,其中username输入__token__,password输入token值(使用正式环境的token值),然后按Enter即可

到此,大功告成,接下来,便可直接用pip进行安装了

5使用pip安装测试

4.1 安装PyPi测试环境的包
运行以下命令,则会从PyPi测试环境下载并安装上传的分发包

python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-pkg-YOUR-USERNAME #其中 example-pkg-YOUR-USERNAME 即自己指定的包名
4.2 安装PyPi正式环境的包
pip install example-pkg-YOUR-USERNAME

6、包版本更新

后续,如果需要对自己的包发布新版本,照以上步骤完成即可,别忘了修改setup.py文件内的版本号信息

posted @ 2023-02-18 16:53  貌似大家  阅读(65)  评论(0编辑  收藏  举报