python安装pip包(如何将Python包发布到)

python安装pip包(如何将Python包发布到)(1)

在本文中,让我们了解如何开发 Python 包,然后将其发布到 PyPi 进行分发。这是一篇包含一些高级概念的技术文章,但我将花一些时间详细介绍每个概念,并在我们继续进行时提供执行所有步骤的演练。python 程序员经常在 python 应用程序中使用各种包,如 Pandas、NumPy 等,以使其更健壮并利用 SDK 的丰富功能。为了在您的代码中使用任何此类包,您首先需要在您的机器上安装这些包,然后将其导入您的代码中。

当我们谈论PIP(python 中著名的包管理工具)时,这个想法可能看起来很熟悉。为了在 python 中安装任何包,我们使用 pip install <package_name> 并且包被安装在我们的机器上。但是,这些包维护在称为PyPi或 Python 包索引的中央存储库中。PyPi 是 Python 包的官方第三方软件存储库。每当您运行 pip install 命令时,pip 工具都会在此存储库中搜索包,然后将其下载并安装到您的机器或虚拟环境中。

什么是 Python 包

在 python 中开发包时,第一件事是你应该知道 python 中的包和模块是什么。您在.py文件中编写的任何代码在 python 中都称为模块。模块可以导入到另一个模块中。可以将针对任何特定操作的多个模块的集合组合在一起以形成一个包。包还可以包含组织成目录和子目录的代码。您可以从官方文档中阅读更多关于 python 模块和包的信息。

python安装pip包(如何将Python包发布到)(2)

发布 python 包的步骤非常简单,如下所示。

1.编写你的python模块并将其保存在一个目录下。

2. 创建包含必要信息的 setup.py 文件。

3. 选择一个许可证并为您的项目提供一个 README 文件。

4. 在本地机器上生成分发档案。

5. 尝试在本地机器上安装包。

6. 将包发布到TestPyPi存储库以检查是否一切正常。

7. 最后,将包发布到PyPi存储库。

现在让我们一个一个地执行上述每个步骤,将我们的包发布到 PyPi 存储库。

创建python包和目录结构等文件。

您应该首先确定包的名称,然后使用包的名称创建目录名称。假设我们要发布一个名为“ quicksample ”的包,所以目录应该是同名的。在其下创建另一个名为“ src ”的子目录,并在src子目录下放置一个 quicksample.py 文件。

此外,您还应该在项目的根目录下包含一个 setup.py 文件、一个 readme.md 和一个 LICENSE 文件。您可以从GitHub 链接了解有关许可的更多信息。此时,您的项目结构应如下所示。

python安装pip包(如何将Python包发布到)(3)

为了简单起见,我们将在 quicksample.py 文件中编写一个简单的方法,以便在导入后调用。

def quicktext(): print('Hello, welcome to QuickSample package.')

现在,让我们开始编辑 setup.py 文件。您可以使用以下代码段来更新您的设置文件。

import setuptools with open("README.md", "r") as fh: long_description = fh.read() setuptools.setup( name="quicksample", # This is the name of the package version="0.0.1", # The initial release version author="Aveek Das", # Full name of the author description="Quicksample Test Package for SQLShack Demo", long_description=long_description, # Long description read from the the readme file long_description_content_type="text/markdown", packages=setuptools.find_packages(), # List of all python modules to be installed classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], # Information to filter the project on PyPi website python_requires='>=3.6', # Minimum version requirement of the package py_modules=["quicksample"], # Name of the python package package_dir={'':'quicksample/src'}, # Directory of the source code of the package install_requires=[] # Install other dependencies if any )

设置文件准备好后,最后一步是添加 readme.md 文件。它只是一个 markdown 文件,您可以在部署包时使用它来记录包,或者也可以在 GitHub 上为您的项目记录包。

A sample python package deployment utility for SQLShack Demo.

在本地机器上生成分发包

现在 python 包的代码几乎完成了,您可以开始构建分发档案。存档是压缩文件,可帮助您的包跨多个平台部署,并使其独立于平台。为了生成分发档案,请从您的终端运行以下命令。

python -m pip install --user --upgrade setuptools wheel

这将升级您机器上的 setuptools 库以使用最新版本。在此之后,您需要从包的根目录运行以下命令来生成分发文件。

python setup.py sdist bdist_wheel

运行上述命令后,您可以看到分发包将交付到目录下 - builddist,新创建的目录如下所示。除此之外,您还可以看到项目源代码中的egg文件信息也已更新。

python安装pip包(如何将Python包发布到)(4)

在本地机器上安装包。

现在我们已经准备好分发文件,我们可以继续尝试安装和导入包以测试它是否工作正常。为了在本地机器上安装包,从根目录运行以下命令。

pip install -e .

python安装pip包(如何将Python包发布到)(5)

如上图所示,第一步我们使用命令在本地安装包,安装后,我们启动 python shell 并导入它。然后我们调用 package 方法并将消息打印到终端。

将包发布到TestPyPi

一旦包在本地安装并且工作正常,现在就可以将其发送到 TestPyPi 存储库了。这是所有 python 包的测试存储库,用于测试并查看所有代码是否正常工作并且包代码中没有问题。这使它与官方 PyPi 存储库隔离,并确保只有经过全面测试的包才会部署到生产环境中。

打开https://test.pypi.org/并注册用户。注册后,打开终端并运行以下命令。这将在你的机器上安装一个名为“ twine ”的包,它将帮助将 python 包发送到存储库。

python -m pip install — user — upgrade twine

您可以在此处阅读有关打包 python 应用程序和twine的官方文档。安装 twine 包后,首先运行以下命令将代码发送到 TestPyPi。当您运行该命令时,系统会要求您提供与您在上一步中注册帐户时使用的相同的凭据。

python -m twine upload — repository testpypi dist/*

python安装pip包(如何将Python包发布到)(6)

如上图所示,python 包现已发送到 TestPyPi 存储库,您可以从上面终端中的 URL 链接查看它。

为了从测试存储库安装包,首先我们将卸载已经存在的包,然后运行以下命令来安装它。

pip uninstall quicksample

pip install -i https://test.pypi.org/quicksample/ quicksample==0.0.1

这将从 TestPyPi 存储库将包安装到本地系统上。

将包发布到PyPi存储库

现在我们的包一切正常,是时候将它发布到官方 PyPi 存储库了。按照相同的步骤注册一个帐户,然后运行以下命令将包发送到官方存储库。

python -m twine upload dist/*

您现在可以使用标准命令安装该软件包。

结论

恭喜,你已经成功发布了你的 python 包。

在这篇进阶文章中,我们了解了 Python 包是什么,以及如何在 Python 中开发一个简单的包。我们还了解了名为 PyPi 的 Python 第三方官方存储库,开发人员可以在其中发布自己的包并重用代码。您可以将您的 python 代码构建到sdistswheel文件中,然后将其发布在 PyPi 上。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页