试验未通过2t3英寸setup.py?

2024-04-19 11:52:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个设置.py它需要同时支持python2和python3。在

该代码目前可以工作,并且可以在Python2.x中安装

如果我在我的设置.py,则可以在Python 3中安装,但是,执行以下操作:

python setup.py test

导致失败,因为其中一个测试使用StringIO类和Python3中的导入行goofs(当前是from StringIO import StringIO,在Python3中应该是from io import StringIO

但我认为一旦添加了use to3关键字,所有的测试(包括unittests)在测试之前都是由2to3处理的。在

我错过了什么?万一有帮助,我的大部分设置.py看起来像:

^{pr2}$

编辑:我觉得2to3不能在python setup.py test上运行的原因是它炸毁了stacktrace的底部:

File "/home/aparkin/temp/mymodule/test_mymodule.py", line 18, in <module>
    from StringIO import StringIO

但如果我在测试中跑2t3_我的模块.py,则该导入行应重新处理为:

from io import StringIO

而且(最坏的情况下)这些测试只会个别失败。在


Tags: 代码frompyiotestimportusesetup
1条回答
网友
1楼 · 发布于 2024-04-19 11:52:38

为了使distribute能够启动您的模块并在2to3中运行,它必须列在py_modules中。所以改成:

py_modules=['mymodule', 'test_mymodule'],

不幸的是,这有一个副作用,即在安装项目时安装test yumymodule,而这可能是您不想要的。对于这种情况,我通常会将项目转换为一个带有我的模块测试子包。这样测试就可以“安装”而不增加额外的混乱。在

相关问题 更多 >