문제

테스트 중심의 개발에서 중소 규모의 파이썬 프로젝트를 시작하고 있습니다. 내 배경은 Python보다 C와 Java가 더 많습니다 (INT와 Makefile을 사용했습니다)

파이썬에서는 빌드 도구가 필요하지 않을 수도 있지만 Cython과 Pyinstaller를 사용하기 때문에 (Python에 직접 의존하지 않고도 몇 가지 다른 유닉스에서 작동해야 함) 편의를 원하기 때문입니다. 테스트를 선택하여 CLI 형식, 문서 구축, 의존성 검사 등.

어떤 사람 파이썬에는 제작 도구가 부족하다고 불평하고 있습니다. 나는 도구가 거의 없다는 것을 알고 있습니다 스콘 그리고 포장 인부, 그러나 나는 웹 사이트뿐만 아니라 실제 사용자의 의견을 듣고 싶습니다. 아무도 사용합니까? 포장 인부?

많은 패키지와 함께 제공되는 일반적인 setup.py는 무엇입니까? 나는 일반적인 사용법이 있는지 확인하기 위해 몇 가지를 살펴 보았지만 흥미로운 것을 찾지 못했습니다 (아마도 잘못된 예제를 사용했을 수도 있습니다).

내가 이미 알고있는 것들 (개미와 makefile)을 적어도 시작하는 것을 추천합니까? 그렇다면 Python (+Cython+Pyinstaller+Pyunit)에 권장되는 개미 확장이 있습니까?


편집 : JWP와 같은 추가 답변을 피하기 위해이 프로젝트의 경우 절대적으로 내 프로그램이 독립형 실행 파일이어야합니다. 불가능한 실행 파일이 실행되는 대상 플랫폼에 Python VM을 갖습니다. 컴파일에 사용할 수있는 HW와 정확히 동일한 HW가 있으므로 운 좋게도 크로스 컴파일 할 필요가 없습니다 (그러나 더 친근한 Linux에서 개발을 수행 할 것입니다).

또한 내 코드가 처음부터 Cython에서 컴파일하는지, 조기 최적화가 아니라, 호환되지 않는 기능을 사용하는 데 너무 멀지 않도록하는지 테스트하고 싶습니다. Cython이라면 고통스러운 리팩토링이 필요합니다. 심각하게 필요할 것입니다.

그러니 내 실제 질문에 집중하십시오

도움이 되었습니까?

해결책

귀하의 요구 사항은 오히려 제안합니다 스콘 웹 사이트에 따르면 포장 인부. 후자는 많은 것을 사용하게됩니다. sh() 정기적 인 명령 줄 프로그램을 실행합니다.

최근에 나는 사용을 시작했다 포장 인부 테스트를 실행하고 문서를 작성하는 것이 정말 좋습니다. 스핑크스, 그러나 나는 순수한 파이썬 만 사용합니다. Paver로 가능한 것이 무엇인지 알고 싶다면 2 개의 기사를 적극 권장합니다.Make-to-Paver로 변환 그리고 작문 기술 문서화 Doug Hellmann과 당신은 그의 포장 도로를 확인하고 싶습니다. 구성 파일.

다른 팁

가능하다면 확장 모듈을 피하는 것이 좋습니다 (C/Cython). 처음에. 모든 코드를 Python으로 작성하고 간단하게 사용하십시오. distutils 기반 구성, 테스트를 사용하여 실행하십시오 -m (python -m mypkg.test.testall, 또는 무엇이든; 수입 unittest).

프로젝트를 편안한 상태로 가져 오면 Cython과 함께 일부 최적화와 그에 따른 추가 프로젝트 관리를 해결하기 시작하십시오. Distutils는 확장 모듈을 만들 수 있으므로 Make/Scons가 필요하지는 않습니다.

 project-dir/
  setup.py
  mypkg/
   __init__.py
   mymod.py
   test/
    __init__.py
    testall.py
    testsomething_specific.py

나는 사용하고있다 SetUptools 이를 위해, 때로는 더 복잡한 물건을 위해 개미와 함께 또는 다른 빌드와 통합하기 위해. 일반적으로 그것은 나를 위해 잘 작동했지만 #PyThon (Freenode)의 일부 사람들은이 패키지의 일반적으로 낮은 소스 품질에 대해 불평하고 표준을 추천하는 것을 들었습니다. distutils.

Java (나처럼)에 익숙하다면 실제로 조심해야 할 것은 Python이 분할 패키지를 지원하지 않는다는 것입니다. 즉, sits.db를 src/site/db, site.view에 src2/site/view에 넣을 수는 없습니다. src 및 src2를 Pythonpath에 넣고 모든 것이 작동 할 것으로 기대합니다. 이것은 빌드 도구로 저에게 큰 두통을 일으켰으며 약간 산발적으로 작동했습니다 :)

내가 좋아하는 도구 중 하나는 VirtualEnV입니다. http://pypi.python.org/pypi/virtualenv

사이트에서 :VirtualEnV가 수행하는 일은 고립 된 파이썬 환경을 만드는 도구입니다. 해결되는 기본 문제는 종속성과 버전 중 하나이며 간접적으로 권한이 있습니다. Libfoo의 버전 1이 필요한 응용 프로그램이 있지만 다른 응용 프로그램은 버전 2가 필요하다고 상상해보십시오.이 두 응용 프로그램을 어떻게 사용할 수 있습니까? 모든 것을 /usr/lib/python2.4/site-packages (또는 플랫폼의 표준 위치에 관계없이)에 모든 것을 설치하면 업그레이드되지 않는 응용 프로그램을 의도하지 않은 상황에서 쉽게 업그레이드 할 수 있습니다.

당신은 또한 시도 할 수 있습니다 : http://pypi.python.org/pypi/zc.buildout

사이트에서 :Buildout 프로젝트는 응용 프로그램, 특히 Python 응용 프로그램 작성을 지원합니다. 여러 부품, 파이썬 또는 기타에서 응용 프로그램을 조립하기위한 도구를 제공합니다. 응용 프로그램에는 실제로 여러 프로그램, 프로세스 및 구성 설정이 포함될 수 있습니다.

개발 환경을 배치하기에 우수한 두 번 시도해 보았습니다. 아마도 당신의 요구에 너무 많은 것일 수 있습니다.

나는 또한 코가 매우 멋진 테스트 도구라는 두 곳에서 들었고 읽었습니다.http://somethingaboutorange.com/mrl/projects/nose/0.11.1/, 나는 그것을 시도 할 자유 시간을 찾고 있습니다.

응원에 도움이되기를 바랍니다

JWP의 것과 같은 추가 답변을 피하기 위해이 프로젝트의 경우 실행 파일이 실행되는 대상 플랫폼에 Python VM을 갖는 것은 절대적으로 불가능하기 때문에 내 프로그램이 독립형 실행 파일이어야합니다. 컴파일에 사용할 수있는 HW와 정확히 동일한 HW가 있으므로 운 좋게도 크로스 컴파일 할 필요가 없습니다 (그러나 더 친근한 Linux에서 개발을 수행 할 것입니다).

또한 내 코드가 처음부터 Cython에서 컴파일하는지, 조기 최적화가 아니라, 호환되지 않는 기능을 사용하는 데 너무 멀지 않도록하는지 테스트하고 싶습니다. Cython이라면 고통스러운 리팩토링이 필요합니다. 심각하게 필요할 것입니다.

당신이 찾고있는 모든 것이 독립형 실행 파일을 갖는 것만이라면 Cython을 실행할 필요가 없습니다. 이 작업을 수행하기위한 몇 가지 좋은 라이브러리가 있습니다.

그러나 파이썬 코드를 실행하려면 단순히 해야합니다 대상 시스템에 통역사 또는 가상 머신을 일부 형태 나 방식으로 설치하십시오. 내가 제시 한 솔루션에는 통역사를 쉽게 설치할 수 있도록 통역사를 포함시키는 것만으로도 포함됩니다. 사실, 나는 Cython이 독립형 실행 파이브를 구축 할 수 없다고 확신합니다 (그러나 잘못 될 수 있습니다). 주로 Python 통역사에 대한 확장을 만들기위한 것입니다.

그러나 몇 가지 다른 대안이 있습니다. 대상 기계에 Java 통역사가있는 경우 실행할 수 있습니다. Jython. 또한 a Ironpython .NET의 경우. 그러나 여전히 프로젝트와 함께 이러한 언어에 대한 런타임을 배포해야합니다.

요컨대, 종속성이없는 독립형 실행 파일을 원한다면 유일한 옵션은 직선 C 또는 C ++로 가야합니다.

간단한 파이썬 기반 빌드 도구를 찾고 있다면. 체크 아웃 Pynt. 작업 Pynt 단지 (장식 된) 파이썬 기능입니다. 또한 작업으로 전달되는 레이크 스타일 매개 변수를 지원합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top