Python发布自定义pip项目的完整指南
本文详细讲解如何将Python脚本打包并发布至PyPi。内容涵盖环境准备、PyPi账号注册、项目结构搭建、setup.py参数配置、打包命令使用以及通过twine上传至服务器的完整步骤,帮助开发者轻松分享自己的Python工具库。
前言
在日常开发中,作者常将常用的逻辑封装为Python脚本,例如时间字符串处理或路径文件夹遍历工具。每次新建项目时,都需要将这些工具复制到各个项目中;更换电脑后还需从GitHub重新下载并复制,过程繁琐。因此,构建一个独立的pip项目成为更优解决方案。
环境准备
发布pip程序前,需确保已安装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 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实现,作者也是基于网络资源调整所得。
#!/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”,该参数后的名称对应项目代码所在目录,也是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 = [],这是一个列表,包含项目引用的第三方库。若项目依赖第三方库,需在此处添加包名;若指定非最新版本,还需注明版本号。
第五步:打包自已的项目
代码编写完成并经测试无误后,即可进行打包。
使用以下两个命令进行打包:
作者使用的是第二个命令。
$ 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,在Linux或Mac系统中$HOME即为用户主目录~/。在此目录下创建.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管理员权限即可安装。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













