Comment intégrer un interpréteur Python sur un site web
Je suis tenter de construire un enseignement de codage du site, similaire à Codecademy, mais je suis franchement à une perte quant à ce que des mesures doivent être prises. Pourrais-je être pointé dans la bonne direction, y compris même un simple interpréteur python dans une webapp?
Vous pouvez voir comment cela fonctionne dans ipython notebook: sudo apt-get install ipython notebook ipython
Je ne suis pas le plus expérimenté, avec des outils de développement web. Je suis l'espoir d'en apprendre autant que je peux à partir d'un projet avec un objectif ambitieux!
Jetez un oeil à ceci: doc.pypy.org/en/latest/sandbox.html
Oh, cela va être très utile. Le IPython Notebook site propose même un mode d'emploi sur l'exécution d'un public notebook serveur!
Merci beaucoup, @ChristopheD. Je vais lire à travers elle.
Je ne suis pas le plus expérimenté, avec des outils de développement web. Je suis l'espoir d'en apprendre autant que je peux à partir d'un projet avec un objectif ambitieux!
Jetez un oeil à ceci: doc.pypy.org/en/latest/sandbox.html
Oh, cela va être très utile. Le IPython Notebook site propose même un mode d'emploi sur l'exécution d'un public notebook serveur!
Merci beaucoup, @ChristopheD. Je vais lire à travers elle.
OriginalL'auteur twoxmachine | 2012-06-29
Vous devez vous connecter pour publier un commentaire.
Une option pourrait être d'utiliser PyPy pour créer un bac à sable python. Il permettrait de limiter les opérations extérieures quelqu'un pouvait le faire.
Une fois que vous avez mis en place, votre site web serait de prendre le code source, et de l'envoyer sur ajax sur votre serveur, et le serveur va exécuter le code dans un sous-processus d'un bac à sable python instance. Vous serait également en mesure de tuer le processus si elle a pris plus de temps que de dire 5 secondes. Ensuite, vous revenez à la sortie à l'arrière comme une réponse au client.
Voir ces liens pour obtenir de l'aide sur un PyPy sandbox:
http://doc.pypy.org/en/latest/sandbox.html
http://readevalprint.com/blog/python-sandbox-with-pypy.html
Pour créer un entièrement interactif REPL serait encore plus impliqués. Vous devez garder un interprète en vie à chaque client sur votre serveur. Puis d'accepter ajax "lignes" d'entrée et de les exécuter à travers l'interp en communiquant avec le processus en cours, et le retour de la sortie.
Dans l'ensemble, pas trivial. Vous avez besoin d'un peu forte dev compétences pour le faire confortablement. Vous pouvez trouver cette tâche un peu difficile si vous êtes seulement à apprendre.
OriginalL'auteur jdi
Il n'y a plus à faire ici que vous le pensez.
Le problème majeur est que vous ne peut pas laisser les gens exécuter arbitrairement du code Python sur votre serveur. Par exemple, ce qui se passe si ils ne
Donc clairement que vous avez à exécuter ce code Python en toute sécurité. Mais puis vous avez le problème de la sécurisation de Python, ce qui est pratiquement impossible en raison de la façon dont elle est dynamique. Et donc, vous aurez probablement à lancer Python shell dans une machine virtuelle, qui vient avec ses propres maux de tête.
Avez-vous vu par exemple http://code.google.com/p/google-app-engine-samples/downloads/detail?name=shell_20091112.tar.gz&can=2&q=?
OriginalL'auteur Katriel
Une option récente pour cela est d'utiliser repl.
Cette option est génial parce que les compilateurs sont faites à l'aide de JavaScript de sorte que le compilation et exécution est faite dans le côté utilisateur, ce qui signifie que le serveur est libre de vulnérabilités.
Ils ont compilateurs pour: Python3, Python, Javascript, Java, Ruby, PHP...
Je vous recommande fortement de vérifier leur site à http://repl.it
OriginalL'auteur
Regarder dans les Conteneurs LXC. Ils ont une jolie fraîcheur de l'api que vous pouvez utiliser pour créer léger linux containers. Vous pouvez exécuter le processus secondaire commandes à l'intérieur de ce conteneur de cette façon, l'utilisateur final pourrait ne pas le désordre de votre serveur principal.
OriginalL'auteur Josh C