如果您已经在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函数的不同参数做了什么:
- name :它是您项目的名称。您的包将在 PyPI 上以此名称列出。
- version :它是一个字符串,您可以在其中指定项目的当前版本。
如何设置系列版本的方案完全是您的选择(您可以使用’1.0’或’0.1’甚至’0.0.1’)。
如果您发布项目,此版本会显示在每个版本的 PyPI 上。每次上传新版本时,您也必须更改此参数。 - 描述:关于包的简短描述。您可以使用 long_description 参数来编写长描述。
- long_description:我们可以使用富文本来更好地描述我们的文件。默认文件格式是 reStructuredText 。您可以查看DESCRIPTION.txt以了解语法。
- url:项目的主页 URL。这使人们更容易关注您的项目或为您的项目做出贡献。
- author, author_email:关于作者的详细信息
- 许可证:指定您使用的许可证类型。
- 分类器:这是一个字符串列表,我们可以在其中指定有关项目的更多详细信息,例如项目的开发状态、主题、许可证和支持的Python版本。您可以在此处查看更多分类器。
- install_requires:它可用于指定您的包需要运行哪些第三方库。当有人安装您的软件包时,这些依赖项将由 pip 安装。
- 关键字:列出关键字来描述您的项目。
- 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/