2010-04-30 8 views
2

Nous avons une application Django qui s'exécute sur un serveur Apache (mod_python) sur une machine Windows qui doit appeler certains scripts. Pour ce faire, il serait plus facile d'appeler r via os.system, mais quand django arrive à la commande os.system, il se bloque. J'ai aussi essayé un sous-processus avec le même résultat.Impossible d'exécuter la commande os.system dans Django?

Nous avons un problème lié au fait que Django peut seulement accéder au système de fichiers de la machine sur laquelle il est allumé, tous les lecteurs réseau semblent être invisibles, ce qui est TRÈS frustrant.

Toute idée sur ces deux questions (je suppose que c'est la même limitation dans les deux cas) serait très appréciée.

Répondre

1

Au lieu de os.system, est-ce que RPy2 répondrait à vos besoins? Je l'ai utilisé dans un cas similaire à celui que vous décrivez avec Django, et ça a plutôt bien marché.

L'interface de haut niveau de rpy2 est conçue pour faciliter l'utilisation des programmeurs R by Python. Les objets R sont exposés en tant qu'instances de classes implémentées par Python, avec R fonctionnant comme des méthodes liées à ces objets dans un certain nombre de cas.

+0

Nous avons essayé rPy2 mais il semblait y avoir pas mal de bogues quand il s'agissait d'effectuer des processus compliqués. à long terme, nous pourrions traduire tous les scripts directement en code python, mais pour l'instant, les scripts séparés sont la seule façon garantie de traiter avec précision nos données. – danspants

+0

Ou voulez-vous dire appeler les rscripts de rpy2? Cette solution simple que je n'avais pas envisagée! – danspants

+0

Droite - essayez la fonction 'rpy2.robjects.source' pour obtenir un script, mais je me demande maintenant si cela sera efficace, si c'est vraiment lié à un problème de lecteur réseau? – ars