2012-06-01 4 views
6

나는, 모두 파이썬 2와 3의 코드는 현재 작동하고 내 setup.py에 use_2to3 = True 절을 추가하면 파이썬 2.x에서테스트는 setup.py에서 2to3에 의해 영향을받지 않습니까?

에 설치가 가능

를 지원하기 위해 필요한 setup.py가 다음 모듈이 이 일을하지만, 파이썬 3을 설치할 수 있습니다 테스트 중 하나가있는 StringIO 클래스를 사용하기 때문에

python setup.py test 

이 실패 원인 및 수입 라인은 현재 from StringIO import StringIO입니다 (파이썬 3 goofs, 파이썬 3에서는 0123이어야합니다.

일단 내가 use_2to3 키워드를 추가하면 모든 테스트 (unittests 포함)는 테스트되기 전에 2to3에 의해 처리됩니다.

무엇이 누락 되었습니까?

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 setup.py test에서 실행하기되지 않는 것처럼 내가 느끼는 이유는 &이 스택 트레이스의 바닥을 불면이다 경우 내 setup.py의 대부분이처럼 보이는 데 도움이 테스트해야 단지 공업 (최악의)

from io import StringIO 

그리고 :

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

을하지만 test_mymodule.py에 2to3를 실행 한 경우, 그 수입 라인에 재 봤는데해야합니다 읽고 개인적으로 실패.

답변

1

배포판이 모듈을 선택하여 2to3까지 실행하려면 py_modules에 나열되어야합니다.

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

불행하게도이 당신이 아마 싶지 않았다 프로젝트를 설치할 때 test_mymodule을 설치하는 부작용이 있습니다 그래서에 있음을 변경합니다. 이런 경우 나는 일반적으로 프로젝트를 mymodule.tests 서브 패키지로 패키지로 변환 할 것이다. 이 방법은 테스트를 추가 설치없이 "설치 가능"시킬 수 있습니다.

+1

mymodule.tests 하위 패키지 란 무엇을 의미합니까? –

+0

"mymodule"이라는 패키지를 만들고 그 아래에 "tests"라는 디렉토리를 만들고 모든 테스트 모듈을 그 아래에 두어 테스트가 mymodule의 서브 패키지이므로 (__init __. py'as를 포함하는 것을 기억해야합니다 mymodule.tests) – Iguananaut

관련 문제