【问题标题】:how to develop pypi package for python3 and python2如何为python3和python2开发pypi包
【发布时间】:2015-05-28 07:44:12
【问题描述】:

谁能告诉我一个教程,解释如何实现一个支持 python2 和 python3 的 pypi 包?谷歌没有提供答案,所以这是我的下一个选择!谢谢。

【问题讨论】:

  • Stack Overflow 几乎不是用于查找教程的增强型 Google。
  • 我主要是说这样人们不会认为我没有尝试找到解决方案。我也在搜索这个问题的答案,但我没有找到答案。我怀疑这是许多开发人员在开发他们的第一个 pypi 包时会遇到的问题。许多 pypi 包支持 2 和 3,但仍有许多重要的包不支持(例如 Fabric)。我不知道为什么会这样,但我想开发一个支持两者的。这是一个关于可能阻止许多开发人员尝试为 Python 做出贡献的问题的合理问题。
  • 要使您的项目与单源 Python 2/3 兼容,请参阅 Porting Python 2 Code to Python 3
  • 除了 Porting Python 2 Code to Python 3 中列出的 2 个桥接模块(链接见上文,我也推荐它),pypi 还有 'six' 模块(6=2*3 )

标签: python python-2.7 python-3.x pip pypi


【解决方案1】:

许多关于 Python 打包的教程的问题在于,它们试图涵盖很多领域,有这么多 种可能的选项。当我处于这个阶段时,我发现它们非常混乱,考虑到您可能遇到的变量数量,以及 Python 历史打包问题的数量,其中一些仍然引导您完成。

我的建议是使用一个你知道在 Python 2 和 Python 3 上运行良好的模块,然后安装到 PyPI,然后研究它。修改它,用您自己想要的代码和模块配置替换部分。您始终可以将您所知道的工作与您当前拥有的进行比较,为您的测试和探索提供坚实的基础。

我不谦虚地向您提供我的intspan 模块作为这样一个起点。它运行在许多 Python 实现中,包括 2 和 3。它具有广泛的测试覆盖率。它的来源是readily available 用于克隆。如果不是intspan,请以其他模块为起点,而不是抽象教程。

【讨论】:

  • 有没有人在同一个包中为 py3 和 py2 创建一个单独的实现来代替使用六个?
  • 是的。主要方法: 1. 使用兼容性库(例如sixnine 或特定于模块的东西) 2. 过滤代码(例如2to3)或 3. 并排实现,有条件地根据其导入Python 解释器正在运行。我使用了 1 和 3 的组合。IME,1 是可取的,尽管有时似乎或需要 3。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多