Может ли Django использовать «внешние» скрипты Python, связанные с другими библиотеками (NumPy, RPy2 ...) - PullRequest
0 голосов
/ 23 сентября 2010

Я новичок в мире (серьезного) развития ИТ-бизнеса, но имею в виду бизнес-идею и все еще пытаюсь визуализировать, как должна работать общая инфраструктура.

Я провел несколько исследований дляхорошая технология для доставки решения.Я очень склонен использовать Python, MySql, Django (Apache) на стороне сервера и некоторые RIA на стороне клиента (вероятно, Flex), поскольку мне нужны некоторые расширенные возможности визуализации (особенно после просмотра проекта FLARE).

Приложение требует некоторого "поднятия" на числовой / статистической стороне и интеграции R с Python (RPy2) + другой, как NumPy, кажется идеальным.новичок) выглядит следующим образом:

Может ли Django (так или иначе) выполнить (внешний) скрипт / программу на python, которые содержат ссылку на дополнительные библиотеки (NumPy ...)?

ex: пользователь запускает действие для выполнения статистического анализа, Django получает запрос и должен выполнить некоторый код Python (используя R, NumPy ...), который использует данные в базе данных и сохраняет результаты обратно в БД.Django получает доступ к данным БД и отправляет их обратно клиентскому приложению для отображения.

Это правильная логика или я совершенно не в курсе?

Заранее большое спасибо за ваш опыт.

Ответы [ 2 ]

5 голосов
/ 23 сентября 2010

Django - это программа на Python.Как и любая другая программа Python, она сможет получить доступ к другим скриптам / модулям Python.Вопрос в том, как выполнить скрипт.Если ваш сценарий явно определяет функцию main (или другую начальную точку), вы можете просто импортировать ее, как если бы вы были модулем, и вызвать main.

Например:

# my custom script. Located in my_script.py
# lots of functions

def main():
    # call functions in sequence.

# my django view.
from myscript import main as script_main
script_main()

Если вы предпочитаете выполнять как из командной строки, то посмотрите на модуль подпроцесс .Если вы хотите запустить его асинхронно, тогда вам может понадобиться что-то вроде Celery .

1 голос
/ 23 сентября 2010

Если вы можете установить его на сервере и импортировать в Python, то вы можете использовать его в Python и, следовательно, в Django.

То есть, если

import foo

работаетзатем

import foo

foo.bar(fobaz)

, при условии, что он будет работать без Джанго.Кроме того, если вы попытаетесь сделать что-то, что отправляет HTTP-заголовки или ответы за пределы Django, вы можете столкнуться с проблемами, но числовые пакеты не будут делать ничего подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...