PyPI是Python软件包索引(Python Package Index)的中心,它是存储Python软件包的全球最大的公共仓库。在PyPI上,您可以找到超过20万个第三方软件包,以及一组工具,可帮助您构建、打包、测试和发布Python软件包。
一、PyPI提供了什么?
PyPI是Python程序员的一个关键资源,它提供了以下内容:
1.超过20万个第三方Python软件包
Python的用户社区非常活跃,因此开发了很多有用的软件包,可以快速启动Python Web应用程序、开发数据分析和机器学习模型、处理图像和多媒体等。在PyPI上,您可以找到任何您需要的包。例如,想要使用Django构建Web应用程序您可以安装django包:
pip install django
您可以使用类似的方式安装其它软件包。
2.易于发布和分发软件包
发布软件包并不是一件简单的事情,但PyPI可以让整个过程变得非常容易,因为它提供了一个工具集,帮助您构建、测试和发布软件包。
为了发布软件包,您首先需要创建一个setup.py文件,该文件描述您的软件包的元数据和依赖性。例如,在这个快速入门指南中,您可以看到如何为一个名为"hello"的Python软件包定义最低要求:
from setuptools import setup, find_packages
setup(
name="hello",
version="0.1",
packages=find_packages(),
install_requires=[
"requests"
],
entry_points={
"console_scripts": [
"hello = hello:main"
]
}
)
此文件应该被放在Python项目的根目录下。运行如下的命令“python setup.py sdist bdist_wheel”,将会打包软件包,并生成 egg-info 和 dist 子目录,最后可以使用类似的方式发布软件包:
pip install dist/hello-0.1-py3-none-any.whl
3.共同维护一组工具集
PyPI还提供了一组工具,帮助您管理软件包依赖性和版本控制。其中最常见的是pip,它是Python程序员常用的软件包管理器之一。pip 可以帮助您安装(以及升级!)软件包、搜索、卸载和管理Python 包依赖项。例如,如下的命令可以安装最新版本的 pandas并将其添加到requirements.txt中:
pip install pandas --upgrade
pip freeze > requirements.txt
二、如何使用PyPI?
想要开始使用PyPI存储你的开源项目,可以按照以下步骤:
1.创建一个Python软件包
首先,您需要创建一个Python软件包,要做到这一点需要学习如何使用Python Flask,这里我们不再赘述。请参阅这份教程,根据您的需要启动一个Flask应用程序。
2.打包Python软件包
一旦您创建了Python软件包,您就可以为它创建源代码分发包和wheel二进制分发包。下面的命令将会创建源代码分发包和wheel二进制分发包:
python setup.py sdist bdist_wheel
3.发布Python软件包
一旦您创建了分发包,您就可以将其发布到PyPI上,下面提供两种不同的方法:
方法1:手工发布软件包
您可以手工发布软件包。为了发布软件包,您需要首先注册账户。然后使用如下命令安装 twine:
pip install twine
接下来,运行如下命令:
twine upload dist/*
该命令会提示您输入PyPI账户名和密码,然后上传您软件包的源代码分发包和所有wheel包。
方法2:使用Github Action自动化发布软件包
您可以设置 GitHub 工作流,来自动化发布您的软件包。首先,您需要在您的github项目设置github secrets,该secrets包含您的PyPI账户名和密码。设置好了后,创建`.github/workflows/deploy.yml`文件,文件内容如下:
name: Deploy
on:
push:
tags: true
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install wheel
pip install twine
- name: Build and Publish
env:
TWINE_USERNAME: __token__
TWINE_REPOSITORY_URL: https://upload.pypi.org/legacy/
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
python setup.py sdist bdist_wheel
twine upload --skip-existing dist/*
这个文件描述了一个工作流程,当你的项目在 master 分支上新打上了 Git tag 时(即版本更新),自动执行此流程。它将代码构建为二进制和分发包,然后将它们上传到PyPI。在此流程中,您需要使用您的PyPI API令牌作为Twine密码。
三、结论
带着上面的指南,您可以使用PyPI来发布您的Python软件包。PyPI是Python软件包索引的中心,它为Python开发人员提供了一个价值连城的资源库。无论是在开发Web应用、数据分析或其它领域,PyPI都是帮助您实现Python项目的一个必备之处。