您的位置:

PyPI.org: Python软件包索引的中心

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项目的一个必备之处。