python将uint8转换字符 python uint8_Software


本教程指导读者如何打包一个简单的Python项目~ 第一次写开源包 传 pypi 感觉挺多坑的,记录一下~


python将uint8转换字符 python uint8_Software_02

处理前


python将uint8转换字符 python uint8_上传_03

之后

一个验证码处理的包 欢迎pr~github.com

python将uint8转换字符 python uint8_Python_04


一个简单的项目

本教程使用一个名为的简单项目example_pkg。如果您不熟悉Python的模块和导入包,请花几分钟时间阅读包含文件包和模块的Python文档。即使您已经有一个要打包的项目,我们仍然建议您按照本示例包使用此示例包,然后尝试使用自己的包。

要在本地创建此项目,请创建以下文件结构:


/packaging_tutorial
  /example_pkg
    __init__.py


创建此结构后,您将需要在顶级文件夹中运行本教程中的所有命令 - 所以一定要确保。cdpackaging_tutorial

编辑example_pkg/__init__.py并在其中放入以下代码:


name = "example_pkg"


这只是为了您可以在本教程后面验证它是否正确安装。

1 . 创建包文件

您现在将创建一些文件来打包此项目并准备分发。创建下面列出的新文件 - 您将在以下步骤中向其添加内容。


/packaging_tutorial
  /example_pkg
    __init__.py
  setup.py
  LICENSE
  README.md


2 . 创建的setup.py

setup.py是setuptools的构建脚本。它告诉setuptools你的包(例如名称和版本)以及要包含的代码文件。

打开setup.py并输入以下内容。您应该更新软件包名称以包含您的用户名(例如,example-pkg-theacodes如果您愿意,可以个性化其他值):


import setuptools

with open("README.md", "r") as fh:
  long_description = fh.read()

setuptools.setup(
  name="example-pkg-your-username",
  version="0.0.1",
  author="Example Author",
  author_email="author@example.com",
  description="A small example package",
  long_description=long_description,
  long_description_content_type="text/markdown",
  url="https://github.com/pypa/sampleproject",
  packages=setuptools.find_packages(),
  classifiers=[
  "Programming Language :: Python :: 3",
  "License :: OSI Approved :: MIT License",
  "Operating System :: OS Independent",
  ],
)


setup()需要几个论点。此示例包使用相对最小的集:

  • name是包的分发名称。只要包含字母,数字_和,就可以是任何名称-。它也不能在pypi.org上使用。请务必使用您的用户名更新此内容,因为这可确保您在上传程序包时不会遇到任何名称冲突。
  • version 是包版本看 PEP 440有关版本的更多详细信息。
  • authorauthor_email用于识别包的作者。
  • description 是一个简短的,一句话的包的总结。
  • long_description是包的详细说明。这显示在Python Package Index的包详细信息包中。在这种情况下,加载长描述README.md是一种常见模式。
  • long_description_content_type告诉索引什么类型的标记用于长描述。在这种情况下,它是Markdown。
  • url是项目主页的URL。对于许多项目,这只是一个指向GitHub,GitLab,Bitbucket或类似代码托管服务的链接。
  • packages是应包含在分发包中的所有Python 导入包的列表。我们可以使用 自动发现所有包和子包,而不是手动列出每个包。在这种情况下,包列表将是example_pkg,因为它是唯一存在的包。find_packages()
  • classifiers告诉索引并点一些关于你的包的其他元数据。在这种情况下,该软件包仅与Python 3兼容,根据MIT许可证进行许可,并且与操作系统无关。您应始终至少包含您的软件包所使用的Python版本,软件包可用的许可证以及您的软件包将使用的操作系统。有关分类器的完整列表,请参阅 https://pypi.org/classifiers/。

除了这里提到的还有很多。有关详细信息,请参阅 打包和分发项目。

3 . 创建README.md

打开README.md并输入以下内容。可以自定义此项,放入一些对项目的介绍。

#

This is a simple example package. You can use

[Github-flavored Markdown](https://guides.github.com/features/mastering-markdown/)

to write your content.

4 . 创建许可证

上传到Python Package Index的每个包都包含许可证,这一点很重要。这告诉用户安装你的软件包可以使用您的软件包的条款。有关选择许可证的帮助,请访问https://choosealicense.com/。选择许可证后,打开 LICENSE并输入许可证文本 (可以在github创建分支时勾选)。


Copyright (c) 2019 The Python Packaging Authority

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


5 . 生成分发档案

下一步是为包生成分发包。这些是上传到包索引的档案,可以通过pip安装。

确保您拥有setuptoolswheel 安装了最新版本:


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


如果您在安装它们时遇到问题,请参阅 安装包教程。

现在从setup.py位于的同一目录运行此命令:


python3 setup.py sdist bdist_wheel


此命令应输出大量文本,一旦完成,应在dist目录中生成两个文件:


dist/
  example_pkg_your_username-0.0.1-py3-none-any.whl
  example_pkg_your_username-0.0.1.tar.gz


6 . 上传 PYPI

最后,是时候将您的包上传到Python Package Index了!

您需要做的第一件事是在 PyPI上注册一个帐户。Test PyPI是用于测试和实验的包索引的单独实例。这对于像我们不一定想要上传到真实索引的本教程那样很棒。要注册帐户,请访问

PyPI – the Python Package Indexpypi.org

python将uint8转换字符 python uint8_Software_05


在该项目命令行下输入


twine upload dist/*


输入 PyPI注册的用户名和密码。命令完成后,您应该看到与此类似的输出:


Uploading distributions to https://test.pypi.org/legacy/
Enter your username: [your username]
Enter your password:
Uploading example_pkg_your_username-0.0.1-py3-none-any.whl
100%|█████████████████████| 4.65k/4.65k [00:01<00:00, 2.88kB/s]
Uploading example_pkg_your_username-0.0.1.tar.gz
100%|█████████████████████| 4.25k/4.25k [00:01<00:00, 3.05kB/s]


上传后,软件包可以在 PyPI 上查看,例如,

Log inpypi.org

python将uint8转换字符 python uint8_Software_05


后续步骤

恭喜,您已经打包并分发了一个Python项目!


pip3 install example_pkg


>>> import example_pkg
>>> example_pkg.name
'example_pkg'


如果你想阅读更多关于包装的Python库,你可以做以下事情:

  • 阅读有关使用setuptools在打包和分发项目中打包库的 更多信息。
  • 阅读包装二进制扩展。
  • 考虑诸如flit,hatch和poetry之类的setuptools的替代方案。