3

我正在尝试使用pip install -r requirements.txt. 但是,一些必需的包不直接支持 Python 3,但可以使用2to3.

有没有办法强制在这些包上自动pip运行?2to3pip install -r requirements.txt

4

1 回答 1

6

不,它需要成为包设置配置的一部分。请参阅使用 Distribute 同时支持 Python 2 和 3

您将元数据添加到包安装程序:

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'],
)

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

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

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

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

于 2013-01-24T12:38:58.950 回答