设为首页 收藏本站
查看: 1448|回复: 0

[经验分享] python使用setuptools打包并上传到PyPi版本库中

[复制链接]

尚未签到

发表于 2017-5-6 12:37:34 | 显示全部楼层 |阅读模式

我博客的地址: http://www.reyoung.me http://www.thisisreyoung.com


最近在写python的一个幻灯生成器。看到很多python的库都以setup.py和easy_install安装,便打算尝试一下。一试之下发现极端简单。所以做一些笔记。


参考的文章有:




  • setuptools开发者文档


  • 可爱的
    Python: 使用 setuptools 孵化 Python egg



准备工作



万事开头难,要想你的python代码可以使用easy_install和setup.py,那么必须做好以下准备:




  • 安装python的setuptools包


  • 你的代码必须是在package里。也就是你的代码不能出现在根目录,应该在一个目录下,且有init.py。



书写你的setup.py脚本



本着记录我的想法的目的,我就不从Hello world开始了。我就直接将SlideGen这个库的setup.py放出来。根据每行说明一下,大家应该就懂了。



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21


setup(
name='SlideGen',
version='0.0.0.1 pre',
packages=['slidegen'],
author='reyoung',
author_email='reyoung@126.com',
license='LGPL',
install_requires=["PyYAML>=3.10","Markdown>=2.1.1","tornado>=2.2"],
description="A HTML5 Slide Generator in python",
entry_points ={
'console_scripts':[
'SlideGen=slidegen.SlideGen:Main'
]
},
keywords ='html5 slide generator',
url='https://github.com/reyoung/SlideGen'
)




这个代码需要在根目录中写一个叫做setup.py文件,在setup.py中包括上述代码。

在其中,必须包含一个叫做setup的函数,在这个函数中,可以对代码包的参数进行设置。一些参数的简单介绍如下:




  • packages:你的代码库包括的package。这个packages可以是多个,也可以通过find_packages自动去做,不过手动也是不错的。

  • install_requires:就是你的代码库需求的第三方库。如果你不记得你的代码中使用的第三方库有什么,可以使用yolk显示所有在setuptools下管理的第三方库

    安装yolk可以使用easy_install yolk

    查询使用easy_install管理的软件包使用命令yolk -l


  • entry_points是自动生成的可执行程序,他会生成到Python*/Scripts/这个目录中。其中:



    • console_scripts是生成命令行程序
    • gui_scripts是生成图形界面程序


    • 等于右边的格式如下:"[可执行程序名]=引入的包名.子包名.模块名:入口函数"




使用setup.py



安装



在写好setup.py后,安装变得异常简单。直接使用命令python setup.py install即可以完成安装。



调试/卸载



我并没有找到使用python脚本卸载的方法,但是可以使用python setup.py install --record install.txt将所有安装的文件列在install.txt中。我们可以使用rm来删除这些文件,达到卸载的目的。



上传到PyPi的版本库



上传pypi后,其他人就可以使用easy_install XXX来安装了。


上传也非常简单,只需要一条命令。


setup.py register sdist bdist_egg upload

而使用这条命令的结果,就会将你的代码传到pypi上,需要注意的是:




  • 如果你没注册pypi帐号,在命令行中他会提示你注册pypi帐号,跟着步骤来就好了。但是需要注意验证电子邮箱。

  • 之后,如果你选择记住密码,他会在你的%HOME%\.pypirc中存储你的密码(linux下是~/.pypirc),需要注意的是,他存储密码的格式不正确,需要手工的添加[server-login]这一段,格式如下

...
[server-login]
username: XXXXXX
password: XXXXXX(明文)

这样你就可以将python的代码上传到pypi版本库中了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-373822-1-1.html 上篇帖子: PyCon 2011 下篇帖子: Python “'ascii' codec can't decode byte 0xb0i in position 1” 的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表