有没有办法用pip install运行2to3?

时间:2013-01-24 12:34:49

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

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

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

1 个答案:

答案 0 :(得分:6)

不,它需要成为软件包设置配置的一部分。请参阅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的软件包的状态。为它们提供补丁通常会有所帮助。如果此类请求和求助提供充耳不闻,对于开源软件包,您可以随时分叉并自行应用必要的更改。