【问题标题】:Is there a way to run 2to3 with pip install?有没有办法通过 pip install 运行 2to3?
【发布时间】:2013-01-24 12:34:49
【问题描述】:

我正在尝试使用pip install -r requirements.txt 维护依赖关系。但是,一些必需的包不直接支持 Python 3,但可以使用 2to3 手动转换。

在执行pip install -r requirements.txt 时,有没有办法强制pip 在这些包上自动运行2to3

【问题讨论】:

  • 当您说“手动转换”时——这实际上是否意味着,2to3 可以在它们上运行,并且无需手动调整即可成功转换它们?

标签: python pip requirements.txt python-2to3


【解决方案1】:

不,它需要成为包设置配置的一部分。见Supporting both Python 2 and 3 with Distribute

您将元数据添加到您的软件包安装程序中:

setup(
    name='your.module',
    version = '1.0',
    description='This is your awesome module',
    author='You',
    author_email='your@email',
    package_dir = {'': 'src'},
    packages = ['your', 'your.module'],
    test_suite = 'your.module.tests',
    use_2to3 = True,
    convert_2to3_doctests = ['src/your/module/README.txt'],
    use_2to3_fixers = ['your.fixers'],
    use_2to3_exclude_fixers = ['lib2to3.fixes.fix_import'],
)

这样的包会在安装到 Python 3 系统时自动运行 2to3

2to3 是一个工具,而不是灵丹妙药,您不能将其应用于从 PyPI 下载的任意包 pip。包需要以它的编码方式支持它。因此,从pip 自动运行它是行不通的;责任在于包的维护者。

请注意,仅仅因为 2to3 在包上成功运行,它并不一定遵循包在 Python 3 中的工作。当您实际开始使用包时,通常会出现关于字节与 unicode 的假设。

联系您感兴趣的软件包的维护者,询问该软件包在 Python 3 中的状态。为他们提供补丁通常会有所帮助。如果此类请求和提供的帮助被置若罔闻,对于开源软件包,您始终可以分叉它们并自行应用必要的更改。

【讨论】:

  • @Jon:你可能想建议对分布式项目进行编辑;该示例代码是从分发文档中逐字编码的。 :-)
  • 我看到了 - 但它困扰了我 - 我会将它添加到我要查看的文档列表中;)
猜你喜欢
  • 2013-09-27
  • 2016-04-15
  • 1970-01-01
  • 2021-09-25
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多