2013-12-12 2 views
0

여기 코드 조직 질문이 있습니다. 장고 프로젝트가 있습니다. 서버에 앉아서 사람들이 사용하고 데이터를 수집합니다. 어떤 시점에서 나는 그 데이터의 무리를 분석 할 필요가있다 (나는 Scipy, numpy, matplotlib를 사용하고있다). 지금 당장 Django 데이터베이스를 데이터의 단일 저장소로 사용하고 있습니다.모범 사례 : django + python 분석

지금 당장은 분석 모듈이 django 프로젝트 안에 있고 라이브 서버가 사용하는 것과 동일한 데이터베이스에 연결하고, 데이터를 가져오고,/plot/whatever을 분석합니다. 하지만 분석 모듈은 Django 프로젝트와는 완전히 별개입니다 (장고 프로젝트를 다른 서버에 배포하고 싶다면 분석 모듈은 함께 가지 않습니다). 그리고 그것은 서로 다른 의존성을 가지고 있습니다.

그럼 분리를 유지하면서도 분석 모듈이 장고 프로젝트의 모든 구성 요소에 액세스 할 수 있도록하려면 어떻게 구성해야합니까? 나는 다른 가상 환경을 가지고 있기를 바란다. (왜냐하면 나는 분석 모듈 의존성이 장고 프로젝트 환경을 혼란스럽게하고 싶지 않기 때문이다) 다른 git repos에 살고 있기 때문이다. 지금

:

(git repo DjangoThing) 
DjangoThing 
    MyDjangoProj 
     settings.py 
     wsgi.py 
     urls.py 
    --->analyze.py (this is dumb) 
     etc 
    MyDjangoApp1 
     models.py 
     etc 
    MyDjangoApp2 
     models.py 
     etc 

어떤 제안이?

+0

어 ... 동일한 프로젝트의 다른 앱처럼 말입니까? 권장 사항에 대해 – yuvi

답변

1

Django 응용 프로그램은 결국 하루 종일 파이썬 코드이므로 다른 가상 환경을 원할 경우 별도의 파이썬 패키지를 만들고 모든 DB 작업을 수동으로 처리 할 수 ​​있다는 것을 기억하는 것이 중요합니다. SQLalchemy, 다른 것 또는 원시 개를 통해. 원하는 장고 앱에 코드가 있다면, 당신의 장고 프로젝트가 어디에 있는지 알 수 있도록 당신의 파이썬 경로를 해킹 할 수 있습니다. 그러나 저장소의 사용자 정의 응용 프로그램은 필연적으로 설정을로드해야하고 manage.py를 통해 발생하는 모든 멋진 작업을 수행해야하기 때문에 manage.py가 어떻게 작동하는지 알 필요가 있습니다.

그럼 어떻게해야합니까? 글쎄, 난 그냥 위의 해설자가 말한 라인을 따라, 그냥 귀하의 장고 repo에 새로운 애플 리케이션으로 분석 애플 리케이션을 만들 수 있습니다. 하지만 먼저 기존 Repo를 쉽게 복제하여 "분석 (analytics)"이라고 부르며 새로 부르는 repo를 호출 할 수 있습니다. 분석 애플리케이션의 경우 requirements.txt를 조정하고 애널리틱스 앱을 추가 한 다음 최소의 노력으로 애널리틱스 애플리케이 션을 보유하고 사용하려면 멋진 django orm을 유지해야합니다. 당신은 여전히 ​​다른 virtualenvs을 가질 수 있습니다, 당신은 어느 하나에 대해 혼란스러워하지 마십시오. 그렇지 않으면 상처와 고통의 세계에있게 될 것입니다.

원하는 경우 저녁 식사를 받고 평안한 API를 통해 분석을 서비스로 제공 할 수도 있습니다.

+0

에게 감사드립니다! django virtualenv (예 : PYTHONPATH에 사이트 패키지 추가)를 참조하도록 analytics virtualenv를 생성 하시겠습니까? 상처와 고통의 세계를 피하려고 노력 : – andy

+0

@andy 당신은 단지 별도의 virtualenv를 만들고 그것을 (env_analytics 또는 뭔가 다른 것과 같이) 다른 곳으로 호출하고 정상적인 환경 대신에 사용하려고합니다. 당신은 다른 venv를 지적하고 싶지 않습니다 왜냐하면 그것은 depdencies에 문제가 될 것이기 때문입니다. –

+0

내가 궁금한 건 장고 프로젝트에 의존성을 추가하는 상황을 어떻게 처리 할 것인가 ... 그리고 분석에서 그것을 사용할 필요가있다. 수동으로 env_analytics에 추가 하시겠습니까? 의존성 = "장고 프로젝트의 모든 것"과 "이 다른 것들"을 말하는 "깨끗한"방법이있는 것처럼 보입니다. 아니면 나쁜 생각입니까? – andy