📜  打包和发布Python代码

📅  最后修改于: 2021-10-22 03:39:22             🧑  作者: Mango

如果您已经在Python编码,即使有一段时间,您现在也必须熟悉“pip”的概念。它是一个包管理系统,用于安装和管理用Python编写的软件包/库。
那么有人可能会问,所有这些包/库都存储在哪里?很明显,必须有一个大型的“在线存储库”来存储所有这些代码。这个问题的答案是Python Package Index (PyPI)。

PyPI 是Python的官方第三方软件存储库。在撰写本文时,PyPI 已经托管了 95971 个包!
pip 使用 PyPI 作为包及其依赖项的默认源。所以每当你输入:

pip install package_name

pip 将在 PyPI 上查找该包,如果找到,它将下载并在您的本地系统上安装该包。

在本文中,我将演示如何在 PyPI 上发布自己的Python包,以便它可以单行安装,并且可供所有其他在线Python用户轻松使用!我将以一个示例包为例,向您展示完整的过程。示例包托管在 Github 上。

第 1 步:准备好Python脚本

第一步当然是准备好你的Python程序(你想在PyPI上发布)!

它可以是任何Python脚本。在这里,我使用我自己的Python脚本,我将其命名为“ locator.py ”(我使用这个名称仅供参考。随意以任何名称保存您的Python脚本。)此文件可在此处获得。

第 2 步:准备好包目录结构

这是最重要的一步。现在,我们必须为我们的包目录遵循一些预定义的结构。
作为参考,请随时查看本教程中使用的示例项目的 Github 存储库。您可以克隆此存储库并进行一些修改以创建您自己的包。

目录结构必须是这样的:
准备好包目录结构

好的,让我们讨论一下所有这些文件将包含什么。

  • setup.py :它是最重要的文件。它是配置项目各个方面的文件。 setup.py 的主要功能是它包含一个全局 setup()函数。此函数的关键字参数是如何定义项目的具体细节。
    您将需要使用 pip 安装此 setuptools 库:
    pip install setuptools

    这是我的setup.py 的样子:

    from setuptools import setup
      
    # reading long description from file
    with open('DESCRIPTION.txt') as file:
        long_description = file.read()
      
      
    # specify requirements of your package here
    REQUIREMENTS = ['requests']
      
    # some more details
    CLASSIFIERS = [
        'Development Status :: 4 - Beta',
        'Intended Audience :: Developers',
        'Topic :: Internet',
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python',
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.6',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Programming Language :: Python :: 3.5',
        ]
      
    # calling the setup function 
    setup(name='mygmap',
          version='1.0.0',
          description='A small wrapper around google maps api',
          long_description=long_description,
          url='https://github.com/nikhilkumarsingh/mygmap',
          author='Nikhil Kumar Singh',
          author_email='nikhilksingh97@gmail.com',
          license='MIT',
          packages=['geo'],
          classifiers=CLASSIFIERS,
          install_requires=REQUIREMENTS,
          keywords='maps location address'
          )
    

    让我们看看 setup函数的不同参数做了什么:

    1. name :它是您项目的名称。您的包将在 PyPI 上以此名称列出。
    2. version :它是一个字符串,您可以在其中指定项目的当前版本。
      如何设置系列版本的方案完全是您的选择(您可以使用’1.0’或’0.1’甚至’0.0.1’)。
      如果您发布项目,此版本会显示在每个版本的 PyPI 上。每次上传新版本时,您也必须更改此参数。
    3. 描述:关于包的简短描述。您可以使用 long_description 参数来编写长描述。
    4. long_description:我们可以使用富文本来更好地描述我们的文件。默认文件格式是 reStructuredText 。您可以查看DESCRIPTION.txt以了解语法。
    5. url:项目的主页 URL。这使人们更容易关注您的项目或为您的项目做出贡献。
    6. author, author_email:关于作者的详细信息
    7. 许可证:指定您使用的许可证类型。
    8. 分类器:这是一个字符串列表,我们可以在其中指定有关项目的更多详细信息,例如项目的开发状态、主题、许可证和支持的Python版本。您可以在此处查看更多分类器。
    9. install_requires:它可用于指定您的包需要运行哪些第三方库。当有人安装您的软件包时,这些依赖项将由 pip 安装。
    10. 关键字:列出关键字来描述您的项目。
  • DESCRIPTION.txt:此文件包含有关我们的包秀的PyPI页的详细说明。我们在这里使用 reStructuredText 文件格式。在此处检查我们包中使用的文件。
  • LICENSE.txt :为您的项目的使用设置许可证是一个很好的做法。您可以使用任何免费提供的模板。最常用的是MIT许可证。
    我用于此项目的许可证可在此处获得。(您可以替换作者姓名以在您的项目中使用此许可证)
  • README.md :这个文件与我们的 PyPI 包无关。它包含要在 Github 页面上显示的描述。您也可以将它用于 PyPI 页面,但需要对我们的代码进行更多修改。现在,让我们保持简单。
  • __init__.py__init__.py的主要用途是初始化一个Python包。
    将此文件包含在目录中向Python解释器表明该目录应被视为Python包。
    您可以将此文件留空。

第 3 步:创建您的帐户
现在,是时候在 PyPI 和测试 PyPI 上创建一个帐户了。 Test PyPI 只是一个测试站点,我们将首先上传我们的代码以查看是否一切正常。

创建帐户后,在系统的主目录中创建此.pypirc文件并输入帐户详细信息。

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username= your_username
password= your_password

[pypitest]
repository=https://testpypi.python.org/pypi
username= your_username
password= your_password

注意:如果您使用的是 Windows 系统,只需在命令提示符下键入echo %USERPROFILE%即可了解您 PC 的主目录。将.pypirc文件放在那里。

第 4 步:上传包

最后,我们准备在 PyPI 上上传我们的包!

  • 首先,我们将检查我们的包是否在 Test PyPI 上正确安装。
    在包的根目录中打开命令提示符/终端。
    在终端中运行:
    python setup.py register -r pypitest

    这将尝试针对 PyPI 的测试服务器注册您的包,以确保您已正确设置所有内容。

    现在,运行这个:

    python setup.py sdist upload -r pypitest

    您应该没有错误,现在也应该能够在测试 PyPI 存储库中看到您的库。

  • 成功上传到 PyPI 测试后,执行相同的步骤,但改为指向实时 PyPI 服务器。
    要在 PyPI 上注册,请运行:

    python setup.py register -r pypi

    然后,运行:

    python setup.py sdist upload -r pypi

你已经完成了!您的包现在在 PyPI 上公开可用,并且可以通过简单的 pip 命令轻松安装!
我们使用本教程创建的包在此处可用。

只需在终端上输入,

pip install your_package_name

检查安装过程是否成功完成。

参考:

  • http://peterdowns.com/posts/first-time-with-pypi.html
  • https://包装。Python.org/distributing/