2009-06-09 6 views
1

Practical Django Project의 재사용 가능한 응용 프로그램 장을보고 DjangoCon (Pycon?) 강의를 듣고 나면 Python 경로, 즉 site-packages에 설치하여 응용 프로그램을 플러그 방식으로 만드는 것에 중점을 두는 것 같습니다.장고에 설치된 응용 프로그램 - 버전은 어떻게됩니까?

내가 이해할 수없는 것은 설치된 앱 중 하나의 버전이 변경되면 어떻게되는지입니다. 사이트 패키지에 설치된 앱 중 하나를 업데이트하면 현재 사용중인 모든 프로젝트가 중단됩니다. settings.py에서 당신이 가져올 응용 프로그램의 버전을 지정해주었습니다.

저는 Ruby/Rails에서 이런 종류의 상황에 대해 보석을 고정시킬 수 있다고 생각합니다. 하지만 우리는 Python/Django에서 무엇을해야할까요?

답변

5

동일한 패키지의 여러 버전을 사용하는 것이 번거로 웠습니다 (setuptools에서도 가능).

나는 각 프로젝트를 자체적으로 넣는 것이 더 깔끔하다는 것을 발견했다. virtualenv. 우리는 virtualevwrapper을 사용하여 virtualenv를 쉽게 관리하고, --no-site-packages 옵션을 사용하여 모든 프로젝트를 실제로 자체적으로 포함하고 컴퓨터간에 이식 할 수 있도록합니다.

이것은 recommended setup for mod_wsgi servers입니다.

+0

virtualenv를 pip와 함께 사용하면 훨씬 좋습니다. – Apreche

+0

설명 : '--no-site-packages'옵션은 'virtualenvwrapper'의 mkvirtualenv 명령에 적용됩니다. 'mkvirtualenv --no-site-packages –

0

둘 이상의 Django 사이트가있는 경우 Django 응용 프로그램을 사이트 패키지에 넣고 싶지는 않을 것입니다.

Ken Arnold가 대답 한 가장 좋은 방법은 Ian Bicking의 virtualenv (Virtual Python Environment Builder)을 사용하는 것입니다. 장고의 여러 버전을 실행해야하는 경우 특히 그렇습니다.

그러나 Python과 Django의 단일 버전을 실행할 수 있다면 프로젝트 디렉토리에 앱을 설치하는 것이 조금 더 쉬울 수도 있습니다. 외부 앱이 업데이트되면 이러한 방식으로 각 프로젝트를 한 번에 하나씩 업그레이드 할 수 있습니다. 이것은 한 번에 외부 Django 응용 프로그램에 사용되는 Pinax 구조이지만, 이제는 setuptools/distutils 대신 virtualenv + pip을 사용하고 있다고 생각합니다.

0

우리가하는 일.

사이트 패키지에 "제 3 자"항목 만 넣습니다. Django, XLRD, PIL 등

전체 프로젝트를 패키지 및 Django 프로젝트의 모음으로 유지합니다. 각 프로젝트는 전체 사이트의 일부입니다. 포트 80과 포트 443 (SSL)에 대해 두 가지 동작이 있습니다.

OverallProject/ 

    aPackage/ 
    anotherPackage/ 

    djangoProject80/ 
     settings.py 
     logging.ini 
     app_a_1/ 
      models.py # app a, version 1 schema 
     app_a_2/ 
      models.py # app a, version 2 schema 
     app_b_2/ 
      models.py 
     app_c_1/ 
      models.py 

    djangoProject443/ 

    test/ 
    tool/ 

우리는 앱 이름의 일부로 버전 번호를 사용합니다. 이는 주요 버전 번호이며 "동일한 스키마 사용"이 주요 릴리스 호환성의 한 정의이기 때문에 스키마에 연결됩니다.

데이터를 마이그레이션해야하며 새 버전에서 작동한다는 것을 증명해야합니다. 그런 다음 이전 버전을 삭제하고 데이터베이스에서 스키마를 제거 할 수 있습니다. 두 앱을 나란히 실행할 수 없으므로 데이터 마이그레이션이 어려울 수 있습니다.

대부분의 응용 프로그램에는 현재 버전이 하나만 설치되어 있습니다.

관련 문제