У меня есть файл setup.py, который должен поддерживать как Python 2, так и Python 3.
Код в настоящее время работает и может быть установлен в Python 2.x
Если я добавлю в свою настройку предложение use_2to3 = True
. py, то модуль может быть установленв Python 3, однако выполнение:
python setup.py test
Вызывает сбой, так как один из тестов использует класс StringIO, а строка импорта в Python 3 не работает (в настоящее время from StringIO import StringIO
, где в Python3 должно быть from io import StringIO
Хотя я думал, что как только вы добавите ключевое слово use_2to3, все тесты (включая модульные тесты) будут обработаны 2to3 перед тестированием .
Что я упустил? Если это поможет, основная часть моего setup.py выглядит так:
from setuptools import setup
setup(
name='myproject',
version='1.0',
description='My Cool project',
classifiers = [
'Programming Language :: Python',
'Programming Language :: Python :: 3',
],
py_modules=['mymodule'],
test_suite='test_mymodule',
zip_safe=False,
use_2to3 = True,
)
Изменить: причина, по которой я чувствую, что 2to3 не запускается на python setu p.py test
заключается в том, что он взрывается, а в нижней части трассировки стека написано:
File "/home/aparkin/temp/mymodule/test_mymodule.py", line 18, in <module>
from StringIO import StringIO
Но если я запустил 2to3 в test_mymodule.py, то эта строка импорта должна была быть переработана на:
from io import StringIO
And (at худшее) тесты должны просто по отдельности провалиться.