前言
因为自已平时会把一个常用到逻辑写成一个工具python脚本,像关于时间字符串处理,像关于路径和文件夹遍历什么的工具。每一次新建一个项目的时候都要把这些工具程序复制到每个项目中,换一个电脑后还要从github生新下载后再复制到项目中,实在太麻烦。最后想想,还是建一个自已的pip项目会比较好。
环境准备
要用 pip 发布 python 程序,首先当然是要安装 Python 和 pip 这两个软件了,以 Ubuntu 16.04 为例:
$ sudo apt update $ sudo apt install -y python python-pip
CentOS 和 RedHat 因为 RPM 体系需要依赖于 python,更是默认就安装好了。
另外发布 Pypi,还需要安装一个发布工具, twine ,以及其所依赖的 setuptools、wheel:
$ sudo pip install --upgrade twine setuptools wheel
好,到这环境就已经就绪了。
第一步:注册一个PyPi帐号
PyPi注册网站
在上边的注册网站上注册一个自已的帐号,注册好后在邮箱激活,一般注册流程都是这么操作了,这里就不多说了。
第二步:在github上创建一个项目
如果你还没有使用过github源码托管网站,可以先注册一个github的帐户再创建项目,我一般创建项目用的是官网提供的桌面工具Github Desktop.
Github Desktop的下载地址:https://desktop.github.com
github注册和创建新项目,这里也不说了,程序员的基本功。
第三步:编写自已的python项目
我这里只有一个timetool.py和pathtool.py两个文件
详情可以查看我的示例项目: https://github.com/fengmm521/pipProject
先建一个目录,比如magetool,这个里边放的是你的项目代码
在这个magetool目录里,新建一个__init__.py,这个文件里可以什么都不用写,然后就是你要发布的.py文件
第四步:编写setup.py文件
这里重点说明一下这个setup.py文件,因为整个pip项目的发布和上传都是基于这个setup.py文件完成的。
大家可以看一下我示例项目的setup.py是怎么写的,其实我也是从网上下载别人写好的。
#!/usr/bin/env python #-*- coding:utf-8 -*- ############################################# # File Name: setup.py # Author: mage # Mail: mage@woodcol.com # Created Time: 2018-1-23 19:17:34 ############################################# from setuptools import setup, find_packages setup( name = "magetool", version = "0.1.0", keywords = ("pip", "pathtool","timetool", "magetool", "mage"), description = "time and path tool", long_description = "time and path tool", license = "MIT Licence", url = "https://github.com/fengmm521/pipProject", author = "mage", author_email = "mage@woodcol.com", packages = find_packages(), include_package_data = True, platforms = "any", install_requires = [] )
setup.py中重要的参数有5个:
1.name
name = “magetool”,这个name参数后边的就是你的项目代码所在目录,也是你pip要上传的项目名称,其他人用pip install xxx来安装时,后边的xxx就是你的这个magetool
2.version
version = “0.1.0”,你工具的版本号,后期你工具更新了,要用pip来更新包的时候,会更新比当前版本号高的新版本。
下边是pip 更新包的命令
pip install --upgrade <包的名字> pip install -U <包的名字>12
3.packages
packages = find_packages(),这个参数是导入目录下的所有__init__.py包
4.install_requires
install_requires = [],这是一个数组,里边包含的是咱的pip项目引用到的第三方库,如果你的项目有用到第三方库,要在这里添上第三方库的包名,如果用的第三方版本不是最新版本,还要有版本号。
第五步:打包自已的项目
在代码编写完成,自已测试后没有问题了,就可以打包了。
打包使用下边两个命令:
我使用的是第二个
$ python setup.py bdist_egg # 生成类似 edssdk-0.0.1-py2.7.egg,支持 easy_install $ python setup.py sdist # 生成类似 edssdk-0.0.1.tar.gz,支持 pip12
两个命令打包好之后都会生成build和dist两个目录,打包的文件会放在dist目录下,供后边上传到PyPi服务器
第六步:上传到PyPi服务器
在上传前,要建一个文件,$HOME/.pypirc,$HOME目录在linux或者mac系统下就是~/目录。在这里建一个.pypirc文件。里边的内容如下:
[distutils] index-servers = pypi [pypi] username:你的PyPi用户名 password:你的PyPi密码 ~
因为不能使用python setup.py register进行上传,使用这个上传会报一个410的错误。所以要使用.pypirc文件保存你的PyPi用户信息,这时使用下载的twine就可以直接上传了。
在别的地方找到的有说上传用python setup.py sdist upload命令,但在我这里用这个命令也会一直失败,所以我用下边的命令上传打包好的pip项目,我上传的是用第五步的,python setup.py sdist命令打包好的项目,
上传好打包的pip安装包:
twine upload dist/magetool-0.1.0.tar.gz1
第七步:使用pip安装刚刚上传的包
pip安装包我这里就不多说了,这个一般用python的都会的
用pip安装上传的包:
pip install magetool --user
–user参数的意思是安装给当电脑的当前用户,要不然会要求系统管理员权限才能安装。加了–user之后就不用sudo的管理员权限了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。