首页 > 其他分享 >pypi上传包

pypi上传包

时间:2023-02-18 17:15:10浏览次数:54  
标签:PyPi py pypi ---- 上传 example

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="[email protected]",    #作者联系方式,可写自己的邮箱地址
    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文件内的版本号信息

标签:PyPi,py,pypi,----,上传,example
From: https://www.cnblogs.com/renoyuan/p/17133047.html

相关文章

  • layui多图片上传
    <div> <buttontype="button"class="layui-btn"id="mulUpload">图片上传</button> <blockquoteclass="layui-elem-quotelayui-quote-nm"style="margin-top:10px;">......
  • 五、文件上传系列-秒传文件
    我们在使用云盘上传文件时会发现秒传文件,速度极快,这是怎么回事呢?秒传文件其实是因为我们要上传的文件前,服务端已经查询到该文件已经存在,没必须再传一份一模一样的文件,直接告......
  • Portswigger 靶场之“文件上传”
    FileuploadvulnerabilitiesAlllabs|WebSecurityAcademy(portswigger.net)1.Remotecodeexecutionviawebshellupload通过Webshell上传远程执行代码......
  • 原生上传
    <template><divstyle="display:flex;margin:0012px0;flex-wrap:wrap;"><templatev-if="files.length>0"><divclass="imgItem"v-for="(v,i)in......
  • day12-SpringMVC文件上传
    SpringMVC文件上传1.基本介绍SpringMVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。spring用JacartaCommonsFileUpload技术......
  • SpringMVC09 - 文件的下载与上传
    文件下载ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文使用ResponseEntity实现下载文件的功能①浏览器触发下载<ath:href......
  • dokuwiki编辑器支持ppt上传
    ​ Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧?Chrome高版本提供了可以将单张图片转换在BASE64字符串的......
  • yunUI组件库解析:图片上传与排序组件yImgPro
    yunUI是笔者开源的微信小程序功能库。目前其中包含了一些复杂的功能组件。方便使用。未来它将分为组件、样式、js三者合为一体,但分别提供。本文所用代码皆来源于组件库中的......
  • 博客园本地上传markdown(自记)
    最近开始要写很多的博客,无奈之前每篇博客都要将本地的图片拖动上传一番,才能完整地发好一篇随笔。便STFW了一下,发现了好东西。记以自用。项目地址:https://github.com/do......
  • 记录uniapp-小程序文件上传问题
    1.支付宝文件上传问题 uni.uploadFile如果缺少fileType运行到微信没有问题,但是运行到支付宝会报错,需要补齐fileType2.接口返回需要注意,res.data为字符串,需要转换JSON......