此示例包使用相对最小的集: name 是包的 分发名称。只要包含字母,数字 _ 和,就可以是任何名称 -。它也不能在 pypi.org 上使用。...对于许多项目,这只是一个指向 GitHub,GitLab,Bitbucket 或类似代码托管服务的链接。 packages 是应包含在 分发包 中的所有 Python 导入包 的列表。...除了这里提到的还有很多。有关详细信息,请参阅 打包和分发项目。 生成分发档案 下一步是为 包 生成分发包。这些是上传到包索引的档案,可以通过 pip 安装。...该 tar.gz 文件是 源存档, 而该 .whl 文件是 构建的分发。较新的 pip 版本优先安装构建的发行版,但如果需要,将回退到源代码存档。您应该始终上传源存档并为项目兼容的平台提供构建的存档。...您需要做的第一件事是在 Test PyPI 上注册一个帐户。Test PyPI 是用于测试和实验的包索引的单独实例。这对于像我们不一定想要上传到真实索引的本教程这样的东西很棒。
最近感兴趣想将开发的项目转成Package,研究了一下相关文章,并且自己跑通了,走了一下弯路,这里记录一下如何打包一个简单的Python项目,展示如何添加必要的文件和结构来创建包,如何构建包,以及如何将其上传到...前端应该在构建包时自动安装它们。前端通常在隔离的环境中运行构建,因此在这里省略依赖项可能会导致构建时错误。这应该始终包括后端的包,并且可能有其他构建时依赖项。...它也不能已经在PyPI上使用。在本教程中,请务必使用自己的用户名更新它,因为这可以确保不会尝试上传与已存在的名称相同的包。 version是包版本。有关版本的更多详细信息,请参阅版本说明符规范。...readme是包含包的详细描述的文件的路径。这显示在PyPI上的包详细信息页面上。在这种情况下,描述是从README.md加载的(这是一种常见的模式)。项目元数据规范中还有一种更高级的表格形式。...当准备好将真实包上传到Python包索引时,可以像本教程中一样执行相同的操作,但有以下重要区别: 为包选择一个难忘且独特的名称; 在https://pypi.org上注册一个帐户,这是两个独立的服务器,
2.Python包发布步骤 下面就开始介绍如何将自己的Python项目发布到PyPI 2.1 创建目录结构 创建一个测试项目,例如project_demo,在该项目下,创建一个待发布的包目录,例如:package_mikezhou_talk...它告诉PyPI我们的项目叫什么名字,是什么版本,依赖哪些库,支持哪些操作系统,可以在哪些版本的Python上运行,等等。...需要注意的是,PyPI上只允许一个版本存在,如果后续代码有了任何更改,再次上传需要增加版本号 author和author_email:项目作者的名字和邮件, 用于识别包的作者。...这一部内容,就根据各自的需求,自行实现即可。例如:我在示例package_mikezhou_talk包目录下,新建了一个main.py文件,在该文件下实现待实现的功能。...3.验证发布PYPI成功 上传完成了会显示success,我们直接可以在PyPI上查看,如下: ? 您可以使用pip来安装包并验证它是否有效。
个结果:这些是我的Conda / Python环境中的包,这些包基本上是由Python-only工具(如pip和virtualenv)无法管理的。...他们将大部分的NETLIB绑定到一个单一的Python包(你可能知道这是SciPy),实际上创建一个分发为python包,以规避Python的分发工具不能用任何有意义的方式管理这些额外的Python依赖...Conda甚至可以分发非Python构建需求,例如gcc,这大大简化了在其分发的预编译二进制代码上构建其他包的过程。...因此,似乎我们剩下两种不同的包装解决方案,但是对于许多Python用户来说,它们具有广泛的重叠(即在隔离环境中安装Python包时)。那么社会应该从这里走?...在我们推进这一点时,我相信,conda和conda-forge社区可以从模仿Python包装管理局的明确和开放的治理模式中受益。
导读 2022年如何创建Python 包?如何发布包?这就是本文[1]所教您的。 1. 大纲 为了创建Python 包,需要编写实现功能的代码,然后需要将其发布到 PyPI。...我希望我的包被称为extendedjson。 在为您的包选择名称时,请务必前往 PyPI[2] 并检查它是否可用! 3.2....然后,我们现在有包依赖项,相当于 Python。在那之后,我们有特定包开发的依赖项,即你在实现功能、测试代码等时所依赖的东西,但最终用户并不真正需要这些东西。最后,我们看到了构建系统的一些设置。...构建包后,您可以尝试将其上传到 TestPyPI: poetry build poetry publish -r testpypi 一旦你完成了,假设一切顺利,你的包应该在 TestPyPI上 testpypi...发布 现在我们有了要分发的真实代码,可以将它发布到真实的 PyPI 存储库! 8.1. 配置PyPI 因为Poetry 是用Python 构建的,所以配置 PyPI 比TestPyPI容易一点。
它们允许更快的安装和更稳定的包分发过程。在本教程中,您将深入了解轮子是什么,它们提供了什么好处,以及它们是如何获得吸引力并使使用Python变得更方便的。 ?...轮子简介 在学习如何将项目打包到轮子中之前,从用户的角度了解使用轮子是什么样子是很有帮助的。 可以像往常一样在环境中安装一个Python包来开始这个实验。...从用户的角度来看,更重要的是,当pip在PyPI上找到一个兼容的滚轮时,并不存在构建阶段。...本节将向您展示pip在PyPI索引服务器上实际看到的内容: 由于项目的复杂性,uWSGI只提供了一个源分发版(uWSGI -2.0.18.tar.gz)。...在我的机器上,从开始到结束大约需要32秒。不仅安装要花费很长时间,而且构建加密还需要提供OpenSSL开发头,并可用于Python。
打包项目 下面就进入本文的正题,Python的打包系统上。基本上我们不需要完全了解打包系统,只要学会简单的几个点就可以打包自己的类库了。...下图是我的项目结构。 ? 此外还可能存在几个文件: setup.cfg。对应的配置文件,一般情况下可以不要。 MANIFEST.in。...清单文件,当项目中需要一些没办法自动包括到源代码分发包的文件时,可能需要用到它。 具体文件内容就不列出了。...源码分发包(sdist) 这是最低等级的一种,基本上就是复制源代码,不过因此在安装的时候有一个必须的构建(可能包括编译)过程来生成各种元信息,哪怕项目是纯的Python项目。...python setup.py bdist_wheel 运行以上命令之后,会在dist文件夹中生成打包好的可发布包。 发布项目 项目打包完毕,生成可可分发包之后,最后一步就是发布项目了。
发布Python包 上一篇介绍了如何使用别人的轮子,现在我们讨论下如何自己造轮子给别人用。...作为一个流行的开源开发项目,Python拥有一个活跃的贡献者和用户支持社区,这些社区也可以让他们的软件可供其他Python开发人员在开源许可条款下使用。...较新的pip版本优先安装内置发行版,但如果需要,将回落到源归档文件中。您应该始终上传源档案,并为项目兼容的平台提供内置档案。...*.egg-info 应该是用来记录整个包的依赖和文件关系以及一些其他属性的东西,没有不影响包的使用,通常会在打包时生成。...分发 上传到Pypi 服务器上,可以是公有的Pypi服务器,也可以是公司或组织内私有的。
前段时间写了一个 django 的应用安装包打包上传到了 PyPI,由于是第一次打包分发,所以趁机研究了一下 Python 打包的相关注意事项。...打包规范 项目结构介绍 首先,一个项目要打包,必须遵循打包的结构,所以,让自己的项目文件和目录规范起来很重要。...现在就以我的 django-tctip 项目来作为例子,我项目结构如下: -django-tctip │ .gitignore │ LICENSE │ MANIFEST.in...我的回答是一起用,将两个文件一起上传到 PyPI,同时,在本地执行上传命令前应该先查看一下两个包里面的内容是否缺少。 2、include_package_data 参数到底需不需要?...其中 --skip-existing 参数可以使得上传同版本的包时不报错,当然也不会替换 PyPI 已有的包,而是忽略掉当前上传的。
用户在使用setuptools创建的包时,并不需要已安装setuptools,只要一个启动模块即可。...可以部署开发模式,使项目在sys.path中 用新命令或setup()参数扩展distutils,为多个项目发布/重用扩展 在项目setup()中简单声明entry points,创建可以自动发现扩展的应用和框架...基础知识点扩展: Python打包分发工具setuptools:曾经 Python 的分发工具是 distutils,但它无法定义包之间的依赖关系。...他还提供了自动包查询程序,用来自动获取包之间的依赖关系,并完成这些包的安装,大大降低了安装各种包的难度,使之更加方便,将程序打包以后可以可以安装到自己的虚拟环境中,也可以上传到PyPI,这样非常方便大项目开发...到此这篇关于python中setuptools的作用是什么的文章就介绍到这了,更多相关python的setuptools是什么内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持
Python项目的依赖关系是什么 让我们从包依赖开始;介绍它们到底是什么以及如何正确管理它们,因为这样可以使以使 Python 项目变得更容易维护。...在 Python 中,这些依赖通常可以在 Python 包索引 (PyPI) 或其他管理工具中找到(例如 Nexus),后面我们都以PyPI为例介绍,因为它是最常用而且大家都在用的包管理工具。...首先 requirements.txt 与 setup.py 之间的通常用于实现不同的需求: 如果主要用于项目开发目的,并且不打算发布到pypi上,则 requirements.txt 就足够了(即使该包是在多台机器上开发的...) 如果包仅在单机开发,但是需要把他作为pip的包发布到pypi上,那么 setup.py/setup.cfg 就足够了。...如果包是在多台机器上开发的并且还需要把他发布到pypi上,这就需要 requirements.txt (多个机器需要相同的开发环境)和 setup.py/setup.cfg 文件(发布到pypi上)。
再加上我成为 PyPA 的成员已经尸位素餐快一年了,还是应该来做点贡献。...包含 data 文件 或者 指定源代码结构,如果你使用的是src/存放包的源码这种项目结构,可以: 打包上传和安装 打包 好了,这个万恶的setup.py我已经写好了,咱要发布 PyPI 了。...第一步,打包成可分发的文件: $ python setup.py sdist bdist_wheel --universal 这条命令会同时生成源代码包(Source Distribution),和二进制包...属性,判断是否与当前 Python 版本兼容,加入候选列表 若是源代码包,直接加入候选列表 最终在候选列表中优先选择 whl 文件为待安装的包,将包下载到本地,候选包的选择可以由pip install的...是在本地时使用。)
再加上我成为 PyPA 的成员已经尸位素餐快一年了,还是应该来做点贡献。...,如果你使用的是src/存放包的源码这种项目结构,可以: setup( package_dir={"": "src"} ) 打包上传和安装 打包 好了,这个万恶的setup.py我已经写好了,咱要发布...第一步,打包成可分发的文件: $ python setup.py sdist bdist_wheel --universal 这条命令会同时生成源代码包(Source Distribution),和二进制包...注意,在 PEP 517 提案之后的今天,永远不要再用python setup.py install,python setup.py build这两种方式安装和构建包了,所有的 PyPI 上的包,都必须通过...backend 是在本地时使用。
pypiserver 是一个最基本的PyPI服务器实现, 可以用来上传和维护Python包. 本文介绍 pypiserver 在Ubuntu上的基本安装, 配置和使用. 1...., 可以在项目下的 dist 目录找到分发包 demo-0.0.1.tar.gz....将分发包上传到 ~/packages 目录下, 接下来就可以访问 pypiserver 上的Python包了. 1.3 安装 pypiserver 上的Python包 在安装和启动 pypiserver...此时, 就可以在Python项目的根目录下, 执行远程安装命令来上传包....我们可以使用-P参数来修改: pypi-server -P /opt/pypiserver/packages 3.3 请求转发 当请求的Python包, 在本地 pypiserver 上没有找到时, 它会将请求转发到外部
pypiserver 是一个最基本的PyPI服务器实现, 可以用来上传和维护python包. 本文介绍 pypiserver 在ubuntu上的基本安装, 配置和使用. 1...., 可以在项目下的 dist 目录找到分发包 demo-0.0.1.tar.gz....将分发包上传到 ~/packages 目录下, 接下来就可以访问 pypiserver 上的Python包了. 1.3 安装 pypiserver 上的Python包 在安装和启动 pypiserver...此时, 就可以在Python项目的根目录下, 执行远程安装命令来上传包....我们可以使用-P参数来修改: pypi-server -P /opt/pypiserver/packages 3.3 请求转发 当请求的Python包, 在本地 pypiserver 上没有找到时,
我在 github 上看一下 Python 生态顶级项目引入 pyproject.toml 的情况。 1....就以我在 PyPI 上维护的 dbm-agent 包为例子,讲一下旧时代的坑。...在 PyPI 上打开任何一个软件包的主页,我们都能在页面看到包的 “版本”,“安装命令”,“介绍” 这些元数据信息 之所以在 PyPI 上能看到这些信息是因为,开发者在项目的 setup.py 文件里一个个的填写了这些信息...现在好了,pyproject.toml 它在 Python 项目的结构上都有一个推荐风式了。假设我们软件包的名字是 npts ,那么整个项目的目录结构在推荐的风格下看起来应该像这样。...我这人比较 real 就直说了,我想涨粉帮忙点下关注,我技术文章的质量还可以关注应该不亏的。 “在看” + “分享” + “点赞” + “收藏” 也是我继续写下去的动力。谢谢!!!
我们从最常用的 Python 包入手,去解答上述这个问题。最初,我列出过去一年在 PyPI 上下载次数最多的 Python 包。接下来,深入研究其用途、它们之间的关系和它们备受欢迎的原因。 ...这个项目旨在支持可同时运行在 Python 2 和 3 上的代码库。 它提供了许多可简化 Python 2 和 3 之间语法差异的函数。一个容易理解的例子是six.print_()。...但你也可以在处理远程下载的数据,但不知道用的是什么字符集时使用它。 ...15 Jmespath 下载次数:4.73 亿 在 Python 中用 JSON 非常容易,因为它在 Python 字典上的映射非常好。对我来说,这是它最好的特性之一。 ...幸好有这样的包,可以让事情变得简单些。 我自己关于计算机上处理时间的经验总结来说是:始终在内部使用 UTC。仅当生成供人类读取的输出时,才转换为本地时间。
应该没有唯一的统一标准,但Python社区大佬Kenneth Reitz在2013年提出一个Python项目目录结构,推荐你日后项目中参考。...第二个文件夹sample,在Python中一般叫做包(package),它是项目核心代码,一般会有多个这种包,__init__.py是Python包包括的文件。...有了setup.py,我们就可以安装包到本地全局环境,或者上传到PyPi,这样全世界开发者都有机会搜索到你的包,并使用pip安装上你的包。...---- 这篇文章梳理了Python项目的标准结构,希望对你有用,点赞或收藏吧,enjoy!...我的课程宣传 我正在录制一个从零学Python的体系课,目前已有120节视频课,正在进行的有爬虫、数据分析、算法等,整个录制完成应该有300节视频课。 预售阶段我决定只299元。
全球各地的程序员都是怎样使用 Python? 我们从最常用的 Python 包入手,去解答上述这个问题。最初,我列出过去一年在 PyPI 上下载次数最多的 Python 包。...这个项目旨在支持可同时运行在 Python 2 和 3 上的代码库。 它提供了许多可简化 Python 2 和 3 之间语法差异的函数。一个容易理解的例子是six.print_()。...但你也可以在处理远程下载的数据,但不知道用的是什么字符集时使用它。...15 Jmespath 下载次数:4.73 亿 在 Python 中用 JSON 非常容易,因为它在 Python 字典上的映射非常好。对我来说,这是它最好的特性之一。 ?...幸好有这样的包,可以让事情变得简单些。 我自己关于计算机上处理时间的经验总结来说是:始终在内部使用 UTC。仅当生成供人类读取的输出时,才转换为本地时间。
setuptools Python打包分发工具setuptools:曾经 Python 的分发工具是 distutils,但它无法定义包之间的依赖关系。...setuptools 则是它的增强版,能帮助我们更好的创建和分发 Python 包,尤其是具有复杂依赖关系的包。其通过添加一个基本的依赖系统以及许多相关功能,弥补了该缺陷。...项目的简短描述,一般一句话就好,会显示在 PyPI 上名字下端。.../tutorials/d… 其他初始化文件 在阅读 Github 上的 Python 库时,除了最基本核心的 setup.py 文件和主程序之外,还会看到其他一些文件。...README.rst/README.md:项目说明文档,使用 reStrutruedText 可以在 PyPI 上很好的渲染,但 Markdown 则支持不够好。
领取专属 10元无门槛券
手把手带您无忧上云