`

Python--PyPI打包上传实践,打包成whl文件实践。

 
阅读更多

参考出处:https://segmentfault.com/a/1190000008663126

参考:http://blog.csdn.net/xluren/article/details/41115045

          https://www.cnblogs.com/lazyboy/p/3830104.html

 

PS:由于网上讲的有些地方比较笼统,特地发表此文章具体描述。

 

上传前的注意事项

  • 假设你的包已经开发完成,并且根目录必须要有一个setup.py

  • 最好有一个README.rst 用来描述你的轮子,虽然这不是必须的,但文档就像内裤,你最好还是要有的。

  • 如果你需要打包代码文件夹以外的文件,比如版权信息等等,你还需要写一个 MANIFEST.in

关于setup.py的补充说明

  • name 必须是唯一的,允许使用数字和字母,推荐使用中划线(-)而不是下划线(_),因为pip安装只支持中划线,比如pip install my-pkg,为了不给自己找麻烦请听话。

  • version推荐遵循语义化版本号规则,简单说就像这样:1.2.0

  • 作者姓名和邮箱地址不一定要和你的PyPI账号一致。

测试本地打包命令

如果上面的都没问题,在本地目录执行以下命令应该能成功在dist目录下生成*.tar.gz的包文件。

python setup.py sdist

setup.py 内容为:需放在要打包的项目的根目录下。

setup.py 代码如下:
from setuptools import setup, find_packages

setup(
    name='interface_demo',
    version='1.0.0',
    description='just for test',
    classifiers=[
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python',
        'Intended Audience :: Developers',
        'Operating System :: OS Independent',
    ],
    install_requires=[],    # install_requires字段可以列出依赖的包信息,用户使用pip或easy_install安装时会自动下载依赖的包
    author='songq001',
    url='https://github.com',
    author_email='284440954@qq.com',
    license='MIT',
    packages=find_packages(),   # 需要处理哪里packages,当然也可以手动填,例如['pip_setup', 'pip_setup.ext']
    include_package_data=False,
    zip_safe=True,
)
 

上传并发布包文件到PyPI

创建 PyPI账号

非常简单,直接通过官网注册 https://pypi.python.org/pypi?..., 但是需要验证邮件并确认激活。

创建用户验证文件 ~/.pypirc

在自己的用户目录下新建一个空白文件命名为.pypirc,内容如下:

[distutils]
index-servers=pypi

[pypi]
repository = https://upload.pypi.org/legacy/
username = <username>
password = <password>

用户名和密码就是上一步骤所创建的,直接明文输入。如果你觉得明文密码不安全也可以留空,在后面的上传过程中会提示你手动输入。

 

此处特地说明:创建.pypirc 的目录为:C:\Users\xxx-q001(你的计算机名)。创建时可以先创建一个txt文件,填入响应内容后修改文件名。

修改时改为.pypirc.保存即可。 注意后面一定要加一个.

 

注册你的包

你需要到PyPI注册并验证你的包,之后才能开始真正上传,注册的方式有以下几种。

  1. 使用命令python setup.py register,最简单但官网不推荐,因为使用的是HTTP未加密,有可能会被攻击人嗅探到你的密码。

  2. 通过PyPI网站提交表单完成注册验证。

  3. 安装 pip install twine 然后在通过命令 twine register dist/mypkg.whl 完成注册。

注册时cmd内容:

C:\Users\xxx>python D:\python\interface_demo\setup.py register

running register

running egg_info

creating interface_demo.egg-info

writing interface_demo.egg-info\PKG-INFO

writing top-level names to interface_demo.egg-info\top_level.txt

writing dependency_links to interface_demo.egg-info\dependency_links.txt

writing manifest file 'interface_demo.egg-info\SOURCES.txt'

warning: manifest_maker: standard file 'setup.py' not found

 

reading manifest file 'interface_demo.egg-info\SOURCES.txt'

writing manifest file 'interface_demo.egg-info\SOURCES.txt'

running check

We need to know who you are, so please choose either:

 1. use your existing login,

 2. register as a new user,

 3. have the server generate a new password for you (and email it to you), or

 4. quit

Your selection [default 1]:

1

Username: xxxx

Password:

Registering interface_demo to https://upload.pypi.org/legacy/

Server response (410): Project pre-registration is no longer required or supported, so continue directly to uploading files.

 

上传并完成发布

你可以任选以下两种方式之一发布你的轮子。

  1. 使用命令:python setup.py sdist upload,还是和上面一样,最简单但是有安全隐患。

  2. 使用 twine: twine upload dist/*

上传成功cmd内容:

C:\Users\xxxx>python D:\python\interface_demo\setup.py sdist upload

running sdist

running egg_info

writing interface_demo.egg-info\PKG-INFO

writing top-level names to interface_demo.egg-info\top_level.txt

writing dependency_links to interface_demo.egg-info\dependency_links.txt

warning: manifest_maker: standard file 'setup.py' not found

 

reading manifest file 'interface_demo.egg-info\SOURCES.txt'

writing manifest file 'interface_demo.egg-info\SOURCES.txt'

warning: sdist: standard file not found: should have one of README, README.rst, README.txt

 

running check

creating interface_demo-1.0.0

creating interface_demo-1.0.0\interface_demo.egg-info

copying files to interface_demo-1.0.0...

copying interface_demo.egg-info\PKG-INFO -> interface_demo-1.0.0\interface_demo.egg-info

copying interface_demo.egg-info\SOURCES.txt -> interface_demo-1.0.0\interface_demo.egg-info

copying interface_demo.egg-info\dependency_links.txt -> interface_demo-1.0.0\interface_demo.egg-info

copying interface_demo.egg-info\top_level.txt -> interface_demo-1.0.0\interface_demo.egg-info

copying interface_demo.egg-info\zip-safe -> interface_demo-1.0.0\interface_demo.egg-info

Writing interface_demo-1.0.0\setup.cfg

Creating tar archive

removing 'interface_demo-1.0.0' (and everything under it)

running upload

Submitting dist\interface_demo-1.0.0.tar.gz to https://upload.pypi.org/legacy/

Server response (200): OK

 

管理你的包

如果你的包已经上传成功,那么当你登录PyPI网站后应该能在右侧导航栏看到管理入口。

点击包名进去后你可以对你的包进行管理,当然你也可以从这里删除这个包。

让别人使用你的包

包发布完成后,其他人只需要使用pip就可以安装你的包文件。比如:

pip install package-name

如果你更新了包,别人可以可以通过--update参数来更新:

pip install package-name --update

可能遇到的错误

Upload failed (403): Invalid or non-existent authentication information.

错误的用户验证信息,你需要创建一个用户验证文件 ~/.pypirc。请参阅上文。

Upload failed (403): You are not allowed to edit 'xxx' package information

你需要先注册你的包才可以开始上传,运行注册命令:python setup.py register

Server response (401): Incomplete registration; check your email

你的PyPI账户还没完成邮箱验证,你需要去注册邮箱找到一封验证邮件完成验证后再重试失败的步骤。

Server response (400): Invalid classifier "Topic :: Software Development :: Utilities"

你的setup.py文件中的classifier信息有误,请按官网的正确分类书写classifier.

error: No dist file created in earlier command

你还没打包就开始了上传命令,建议打包和上传的操作放在一起做,比如:

python setup sdist upload

error: Upload failed (499): Client Disconnected

这应该是网络问题,多重试几次。

Upload failed (400): File already exists

文件已经存在了,你每一次上次都应该更新版本号。

 

 

=======================

现在来说一下打包成whl文件操作:

可参考:http://blog.sina.com.cn/s/blog_1318255b00102wbtz.html

具体要比参考地址简单。

 

首先做好准备工作,即在需要打包的工程根目录下添加setup.py,和前面说的setup.py内容一致。

之后cmd模式进入setup.py目录。

打包成whl命令。

pip wheel --wheel-dir=my_wheels D:\python\interface_demo\z_test (此处放入你需要打包的工程路径即可--如图我要打包的是z_test工程

其中--wheel-dir=my_wheels 是打包存储的路径,可以具体设置。如果不是绝对路径,则默认是在C:\Users\xxxx1下建文件夹。

 

EG:

pip wheel --wheel-dir=D:\other\my_wheels D:\python\interface_demo\z_test

cmd: python setup.py bdist_wheel

 

C:\Users\xxx1>pip wheel --wheel-dir=D:\other\my_wheels D:\python\interface_demo\z_test

Processing d:\python\interface_demo\z_test

Building wheels for collected packages: z-test

  Running setup.py bdist_wheel for z-test ... done

  Stored in directory: d:\other\my_wheels

 

Successfully built z-test

 

提示Successfully built z-test则打包成功了。

 

此时传入自己本地tomcat即可实现局域网共享使用。

 

安装操作:pip install http://localhost:8080/z_test-1.0.0-py2-none-any.whl  (此处为你的whl文件所在绝对路径,此处我的已经上传tomcat服务器,可以直接从服务器上下载安装)

 

 

分享到:
评论

相关推荐

    siou005.pdf

    siou005.pdf

    通信考试题库.doc

    通信考试题库.doc

    minecraft-纹理连接图像生成器.py

    minecraft-纹理连接图像生成器.py

    betaflight-1.rar

    betaflight-1.rar

    【Spring Cloud Eureka】微服务注册中心+提供者+消费者完整项目代码|避坑指南+配置注释+一键运行

    包含三大核心模块: Eureka Server:服务注册中心(端口7000) Eureka Provider:服务提供者(端口7006,模拟业务接口) Eureka Consumer:服务消费者(端口7002,集成服务发现与调用) 资源亮点: 完整可运行的Maven项目,开箱即用,避免环境配置踩坑 关键配置逐行注释,新手友好,拒绝“只贴代码不解释” 附赠常见问题解决方案(JDK版本冲突、端口占用、依赖报错) 提供服务调用测试接口,直观验证服务发现效果 适合人群: 初学Spring Cloud微服务的开发者 想快速搭建Eureka Demo的实战派 被版本兼容性问题折磨的“踩坑专业户”

    chromedriver-win64_136.0.7062.0.zip

    chromedriver-win64_136.0.7062.0

    Matlab simulink 风储调频,模糊控制,风电调频,模糊控制改变风电惯性控制系数 储能采用下垂控制 有SOC特性,调频效果好 纯,创新就是模糊控制 模糊控制系数随着风速和频率而改变

    Matlab simulink 风储调频,模糊控制,风电调频,模糊控制改变风电惯性控制系数。 储能采用下垂控制。 有SOC特性,调频效果好。 纯,创新就是模糊控制 模糊控制系数随着风速和频率而改变,实现了自适应控制 mpc主要用于预测频率,3-mpc-模糊控制联合调频,模糊控制结合mpc预测的频率和风速自适应整定调频系数,进而改变调频控制功率。 ,关键词: 1. Matlab Simulink 2. 风储调频 3. 模糊控制 4. 风电调频 5. 虚拟惯性控制系数 6. 下垂控制 7. SOC特性 8. 自适应控制 9. MPC预测 10. 调频系数 以上关键词用分号分隔为:Matlab Simulink;风储调频;模糊控制;风电调频;虚拟惯性控制系数;下垂控制;SOC特性;自适应控制;MPC预测;调频系数。,基于模糊控制与MPC联合调频的风储系统优化研究

    Python全栈一课通视频教程.zip

    目录: 1-1 课程介绍.mp4 1-2 微信小程序点餐项目介绍.mp4 2-1 python介绍.mp4 2-2 Anaconda安装.mp4 2-3 python优缺点介绍.mp4 2-4 hello world程序.mp4 2-5 python的注释.mp4 2-6 变量.mp4 2-7 字符串整数,mp4 2-8 买书案例.mp4 2-9 买书案例改进版本,mp4 2-10格式化输出.mp4 2-11 字符串格式化输出 2-12 python变量的命名规则.mp4 2-13 算数运算符.mp4 2-14 比较运算符.mp4 2-15 逻辑运算符.mp4 2-16 赋值运算符.mp4 2-17 运算符的优先级.mp4 2-18 条件语句入门.mp4 2-19 python代码块.mp4 2-20 条件语句案例.mp4 2-21 节日案例,mp4 2-22 if elif判断成绩案例.mp4 2-23 剪刀石头布游戏.mp4 2-24 while循环 2-25 累加求和 2-26 偶数求和 2-27 break语句 2-28 continue语句 ........ 网盘文件永久链接

    清华大学-DeepSeek从入门到精通

    即将为你照亮探索 DeepSeek 的前行之路,引领你踏入这片充满无限可能的领域

    通信工程建设程序详解南京联通.ppt

    通信工程建设程序详解南京联通.ppt

    数控编程电子教案.doc

    数控编程电子教案.doc

    小学信息技术--计算机基础知识.ppt

    小学信息技术--计算机基础知识.ppt

    复现一篇24年子刊,通过模式匹配筛选指定能带, ,复现; 子刊; 模式匹配; 筛选; 指定能带;,复现子刊24年研究:模式匹配筛选能带分析

    复现一篇24年子刊,通过模式匹配筛选指定能带, ,复现; 子刊; 模式匹配; 筛选; 指定能带;,复现子刊24年研究:模式匹配筛选能带分析

    基于GPS定位的导航地图中多目标位置的预测

    基于GPS定位的导航地图中多目标位置的预测 (论文+MATLAB) 源码

    挑战杯详解-电脑基础知识-IT计算机-专业资料—培训.ppt

    挑战杯详解-电脑基础知识-IT计算机-专业资料—培训.ppt

    MATLAB实现基于NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档介绍了基于MATLAB实现的NGO-BP(Northern Goshawk Optimization-back propagation,北方苍鹰算法优化BP神经网络)算法优化多输入多输出(MIMO)系统预测的完整项目实例。文档从项目背景与目标出发,详述了项目的挑战及其解决方案,特别强调了NGO算法在全球搜索和局部搜索方面对BP神经网络优化的关键作用。文中还包括项目架构、各模块的设计(如数据预处理、NGO优化、BP网络训练、模型评估与结果输出)、详细源代码示例及图形用户界面(GUI)实现。文档还讨论了项目的应用场景(如工业控制、气象预测、金融风险等),指出了模型的性能优势与改进方向,涵盖了模型更新、大规模数据处理等方面的潜在扩展。 适合人群:熟悉MATLAB编程语言,有一定神经网络基础知识的技术人员,尤其适合从事MIMO系统预测工作的科研工作者或工程师。 使用场景及目标:①适用于需要提升神经网络在多输入多输出系统预测精度和收敛速度的情景,比如智能制造、金融市场分析等领域;②作为学习资料帮助研究人员掌握BP神经网络结合NGO算法的实现过程和技术要点,以推进相关技术的深入研究和发展;③为希望将此类模型部署于生产环境的团队提供从开发到运维全链条的知识指导,如GPU加速、实时数据分析与可视化。 其他说明:文档提供了一整套详细的工程实现方法论,包括但不限于代码细节和GUI设计技巧,并针对可能出现的问题给予了提示和预防措施,如数据预处理的重要性以及超参数的选择等。同时,它也为项目的未来改进预留空间,鼓励采用更多高级技术和跨领域能力提升模型的整体效能,确保其在不断变化的实际环境中保持竞争力。此外,文档也关注到了安全性与用户隐私保护等方面的内容,保证系统的稳健性和合法性。

    java入门 - 数组基础-chapter06.rar

    java入门 - 数组基础-chapter06.rar

    网站建立上传维护.ppt

    网站建立上传维护.ppt

    软考中级冲刺 - 嵌入式系统设计师考点笔记+命题规律+错题溯源实战包+2006-2016真题精解与高频考点全析

    【内容概要】: 本资源囊括软考嵌入式系统设计师全套备考材料,包含:2006-2016年完整真题及专家级答案解析(含解题思路延伸);5套高仿真模拟题(2023新考纲适配版);官方指定教程重点提炼版(精简40%冗余内容);独家整理的「高频考点思维导图」与「错题溯源表」;特别新增RTOS任务调度、CAN总线协议、MMU内存管理等近年高频考点专题解析 【适用人群】: 软考中级备考者;高校计算机专业生;物联网工程师;企业技术培训部。 【使用场景】: 考前3个月系统化复习(每日2小时的学习计划附赠);薄弱环节的专项突破(通过错题率智能诊断表定位);模拟考试环境训练(提供答题卡模板与时间管理策略)。 【数据支撑】: 覆盖近十年98.7%的考点(基于命题数据库分析);2022年真题命中率达83%(对比解析文档验证)。 【差异化优势提炼】: 时效性保障:独家标注2016年后考纲变动对应的历史真题(如AUTOSAR、ROS等新考点);智能备考:提供Excel版「错题-知识点-教材页码」三维映射表;​实战工具:包含考试仿真软件(模拟真实机考环境);增值服务:建立QQ群提供每月专家直播答疑(群号见资源内页)。

    chromedriver-win64_136.0.7054.0.zip

    chromedriver-win64_136.0.7054.0

Global site tag (gtag.js) - Google Analytics