Python发布自定义pip项目的完整指南

竹里
竹里
发布时间:2026-10-13 | 5人浏览过
原创

本文详细讲解如何将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管理员权限即可安装。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表