发布 Python 包曾经是一项艰巨的任务,但现在不再是了。更好的是,它变得更加安全。依靠 CLI 工具同时处理用户名、密码或 API 令牌的日子已经一去不复返了。通过可信发布,您只需向 PyPI 提供 GitHub 存储库的详细信息,GitHub Actions 就会负责繁重的工作。
如何通过可信发布来发布 Python 包
我将介绍一个工作流程,当创建标签时(在开发分支上)将您的包发布到 TestPyPi,或者当您合并到主分支时将包发布到 PyPi。
准备发布包
确保您的 Python 包遵循 PyPI 的打包指南。您至少需要:
- 定义包元数据的
setup.py 或pyproject.toml 文件。 - 结构正确的代码,具有清晰的目录布局。
- 用于在 PyPI 上展示您的项目的自述文件。
有关详细清单,请参阅《Python 打包用户指南》。
在您的存储库中配置 GitHub 操作
让我们首先创建一个新的 GitHub 操作 .github/workflows/test-build-publish.yml。
name: test-build-publish on: [push, pull_request] permissions: contents: read jobs: build-and-check-package: name: Build & inspect our package. runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: hynek/build-and-inspect-python-package@v2
此操作将构建您的包,并将构建的轮子和源代码分发 (SDist) 作为 GitHub Actions 工件上传。
接下来,我们添加一个发布到 TestPyPI 的步骤。每当创建标签时都会运行此步骤,以确保上一步的构建已成功完成。将 PROJECT_OWNER 和 PROJECT_NAME 替换为适合您的存储库的值。
test-publish: if: >- github.event_name == 'push' && github.repository == 'PROJECT_OWNER/PROJECT_NAME' && startsWith(github.ref, 'refs/tags') needs: build-and-check-package name: Test publish on TestPyPI runs-on: ubuntu-latest environment: test-release permissions: id-token: write steps: - name: Download packages built by build-and-check-package uses: actions/download-artifact@v4 with: name: Packages path: dist - name: Upload package to Test PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: repository-url: https://test.pypi.org/legacy/
此步骤下载在构建过程中创建的工件并将其上传到 TestPyPI 进行测试。
最后一步,当拉取请求合并到主分支时,我们会将包上传到 PyPI。
publish: if: >- github.event_name == 'push' && github.repository == 'PROJECT_OWNER/PROJECT_NAME' && github.ref == 'refs/heads/main' needs: build-and-check-package name: Publish to PyPI runs-on: ubuntu-latest environment: release permissions: id-token: write steps: - name: Download packages built by build-and-check-package uses: actions/download-artifact@v4 with: name: Packages path: dist - name: Publish distribution ? to PyPI for push to main uses: pypa/gh-action-pypi-publish@release/v1
配置 GitHub 环境
确保只有特定标签才会触发发布工作流程并保持对发布过程的控制。
通过导航到“设置”->“创建一个新的环境测试版本” GitHub 存储库中的环境。
设置环境并添加部署标签规则。
根据规则或命名模式限制哪些分支和标签可以部署到此环境。
根据命名模式限制哪些分支和标签可以部署到此环境。
配置目标标签。
模式 [0-9]*.[0-9]*.[0-9]* 匹配语义版本控制标签,例如 1.2.3、0.1.0 或 2.5.1b3,但它排除任意标签,例如bugfix-567 或功能更新。
对发布环境重复此操作,以相同的方式保护主分支,但这次针对主分支。
设置 PyPI 项目并链接您的 GitHub 存储库
如果您没有 TestPyPI 帐户,请创建一个帐户。
导航至您的帐户、发布并添加新的待定发布商。
通过提供名称、GitHub 用户名、存储库名称、工作流程名称 (test-build-publish.yml) 和环境名称 (test-release),将 GitHub 存储库链接到 PyPI 项目。
在 PyPI 上重复上述操作,并将环境名称设置为release。
测试工作流程
现在,每当您在开发分支上创建标签时,它都会触发一个版本上传到 TestPyPI,并将开发分支合并到 main 会将版本上传到 PyPI。
未涵盖的内容
虽然本指南介绍了可信发布工作流程,但您还可以考虑实施其他步骤和最佳实践。例如,设置分支保护规则可以确保只有授权的协作者才能推送标签或合并到受保护的分支,例如 main 或development。您还可以在合并之前强制执行状态检查或要求进行拉取请求审查,从而添加另一层质量保证。
看看我的 python-repository-template,其中涵盖了对此工作流程的其他增强功能,例如要求通过单元和静态测试、使用 Pyroma 检查包以及使用 vercheck 确保您的标签与包的版本匹配。
概括
如果您一直不愿分享您的作品,那么现在是尝试可信出版的最佳时机。
- 引入“受信任的发布者”Python 包索引博客强调了一种更安全的发布方法,不需要与外部系统共享长期密码或 API 令牌
- 使用受信任的发布者发布到 PyPI 官方 PyPI 文档,帮助您开始在 PyPI 上使用受信任的发布者。
- 在官方 GitHub 文档中构建和测试 Python。
以上是可信发布 - 发布 Python 包从未如此简单的详细内容。更多信息请关注PHP中文网其他相关文章!

toAppendElementStoApythonList,usetheappend()方法forsingleements,Extend()formultiplelements,andinsert()forspecificpositions.1)useeAppend()foraddingoneOnelementAttheend.2)useextendTheEnd.2)useextendexendExendEnd(

TocreateaPythonlist,usesquarebrackets[]andseparateitemswithcommas.1)Listsaredynamicandcanholdmixeddatatypes.2)Useappend(),remove(),andslicingformanipulation.3)Listcomprehensionsareefficientforcreatinglists.4)Becautiouswithlistreferences;usecopy()orsl

金融、科研、医疗和AI等领域中,高效存储和处理数值数据至关重要。 1)在金融中,使用内存映射文件和NumPy库可显着提升数据处理速度。 2)科研领域,HDF5文件优化数据存储和检索。 3)医疗中,数据库优化技术如索引和分区提高数据查询性能。 4)AI中,数据分片和分布式训练加速模型训练。通过选择适当的工具和技术,并权衡存储与处理速度之间的trade-off,可以显着提升系统性能和可扩展性。

pythonarraysarecreatedusiseThearrayModule,notbuilt-Inlikelists.1)importThearrayModule.2)指定tefifythetypecode,例如,'i'forineizewithvalues.arreaysofferbettermemoremorefferbettermemoryfforhomogeNogeNogeNogeNogeNogeNogeNATATABUTESFELLESSFRESSIFERSTEMIFICETISTHANANLISTS。

除了shebang线,还有多种方法可以指定Python解释器:1.直接使用命令行中的python命令;2.使用批处理文件或shell脚本;3.使用构建工具如Make或CMake;4.使用任务运行器如Invoke。每个方法都有其优缺点,选择适合项目需求的方法很重要。

ForhandlinglargedatasetsinPython,useNumPyarraysforbetterperformance.1)NumPyarraysarememory-efficientandfasterfornumericaloperations.2)Avoidunnecessarytypeconversions.3)Leveragevectorizationforreducedtimecomplexity.4)Managememoryusagewithefficientdata

Inpython,ListSusedynamicMemoryAllocationWithOver-Asalose,而alenumpyArraySallaySallocateFixedMemory.1)listssallocatemoremoremoremorythanneededinentientary上,respizeTized.2)numpyarsallaysallaysallocateAllocateAllocateAlcocateExactMemoryForements,OfferingPrediCtableSageButlessemageButlesseflextlessibility。

Inpython,YouCansspecthedatatAtatatPeyFelemereModeRernSpant.1)Usenpynernrump.1)Usenpynyp.dloatp.dloatp.ploatm64,formor professisconsiscontrolatatypes。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6
视觉化网页开发工具

记事本++7.3.1
好用且免费的代码编辑器

禅工作室 13.0.1
功能强大的PHP集成开发环境

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。