Thread View: pl.comp.lang.python
5 messages
5 total messages
Started by Sebastian Biały
Sat, 17 Feb 2018 08:35
Python w pythonie ale nie w oczywisty sposób
Author: Sebastian Biały
Date: Sat, 17 Feb 2018 08:35
Date: Sat, 17 Feb 2018 08:35
42 lines
2736 bytes
2736 bytes
Cześć. Jest Aplikacja napisana w Pythonie. Zawiera ona wiele małych kawałków funkcjonalnych. Może ale nie musi być kompilowana do exe. Aplikacja służy do realizacji wielu zadań z jakiejś dziedziny. Chciałbym aby kawalki tej Aplikacji byly posklejane glue logic w postaci skryptów pythona bedących na dysku i w zasiegu zmian usera. Wyobrażam sobie to tak że ktoś wybiera jakieś opcje w GUI Aplikacji a nastepnie wybiera jakiś skrypt i go uruchamia wewnatrz mojego środowiska. Czym powinienem sie zainteresować aby uzyskac taki efekt? Chce pewne cechy które nie sa typowe: a) chciałbym aby uruchamiany skrypt dostał pewien zbior obiektów które dostarcze z aplikacji. Np. dostarcze tam (obiekt?) Options z ktorego wyczyta co wyklikał user w GUI. Dostanie rowneż Output który będzie miał metody printujące w konsoli GUI w Aplikacji. b) chciałbym miec całkowitą kontrolę nad skryptem, mogę go w dowolnym momencie wylączyć. Idealem było by gdybym mógł go równiez zatrzymac i wznowić. c) absolutnie znakomite było by gdyby mechanizm udostepniał pracę krokowa skryptu. W Aplikacji bylo by coś w rodzaju script().doNextStatement() w pętli. Wyglądalo by to troche jak koprocedura. I idealnie bez normalnego stosu tak aby nie musiało to lecieć w osobnym wątku. Wszystko to zrobiłem już w innych językach (Aplikacja w Java, skrypty w JavaScript, Aplikacja w C++, skrypty w JavaScript). Zakładam że w Pythonie powinno być łatwiej bo tam nie zawsze było łatwo. Może jednak źle zakładam. Może mi ktoś podrzucić co wklepać w google i gdzie zacząć? Interesują mnie głównie dwa tematy: 1) jak przekazywać obiekty i ogólnie komunikować się ze skryptem. 2) czy istnieje interpreter Pythona w formie koprocedury który mogę wykorzystać w tym zastosowaniu
Re: Python w pythonie ale nie w oczywisty sposób
Author: m
Date: Sat, 17 Feb 2018 12:18
Date: Sat, 17 Feb 2018 12:18
47 lines
2907 bytes
2907 bytes
W dniu 17.02.2018 o 09:35, Sebastian Biały pisze: > Cześć. > > Jest Aplikacja napisana w Pythonie. Zawiera ona wiele małych kawałków > funkcjonalnych. Może ale nie musi być kompilowana do exe. > > Aplikacja służy do realizacji wielu zadań z jakiejś dziedziny. > > Chciałbym aby kawalki tej Aplikacji byly posklejane glue logic w postaci > skryptów pythona bedących na dysku i w zasiegu zmian usera. > > Wyobrażam sobie to tak że ktoś wybiera jakieś opcje w GUI Aplikacji a > nastepnie wybiera jakiś skrypt i go uruchamia wewnatrz mojego środowiska. > > Czym powinienem sie zainteresować aby uzyskac taki efekt? Chce pewne > cechy które nie sa typowe: > > a) chciałbym aby uruchamiany skrypt dostał pewien zbior obiektów które > dostarcze z aplikacji. Np. dostarcze tam (obiekt?) Options z ktorego > wyczyta co wyklikał user w GUI. Dostanie rowneż Output który będzie miał > metody printujące w konsoli GUI w Aplikacji. To, bym zrobił tak że importowałbym plik .py jako moduł i wywoływałbym jakąś tam funkcję z tego modułu przekazując mu odpowiednie obiekty. Wadą jest absolutny brak bezpieczeństwa, tj skrypt napisany przez usera ma absolutnie całkowity dostęp do bebechów twojej aplikacji i może zrobić coś wbrew twoim intencjom. > > b) chciałbym miec całkowitą kontrolę nad skryptem, mogę go w dowolnym > momencie wylączyć. Idealem było by gdybym mógł go równiez zatrzymac i > wznowić. To możnaby było zrobić albo w postaci osobnego procesu, który byś po prostu ubił. > > c) absolutnie znakomite było by gdyby mechanizm udostepniał pracę > krokowa skryptu. W Aplikacji bylo by coś w rodzaju > script().doNextStatement() w pętli. Wyglądalo by to troche jak > koprocedura. I idealnie bez normalnego stosu tak aby nie musiało to > lecieć w osobnym wątku. Co do tego się nie wypowiem bo nie wiem. p. m.
Re: Python w pythonie ale nie w oczywisty sposób
Author: Sebastian Biały
Date: Sat, 17 Feb 2018 12:33
Date: Sat, 17 Feb 2018 12:33
31 lines
2441 bytes
2441 bytes
On 2/17/2018 1:18 PM, m wrote: > To, bym zrobił tak że importowałbym plik .py jako moduł i wywoływałbym > jakąś tam funkcję z tego modułu przekazując mu odpowiednie obiekty. > > Wadą jest absolutny brak bezpieczeństwa, tj skrypt napisany przez usera > ma absolutnie całkowity dostęp do bebechów twojej aplikacji i może > zrobić coś wbrew twoim intencjom. Chcę tego uniknąc. W poprzednich rozwiązaniach JS był izolowany w 100%. Tutaj sprawe komplikuje fakt że to ten sam język. Chce kontrolowac jakie obiekty i jakie metody dostanie skrypt do pracy. Taki sandbox. >> b) chciałbym miec całkowitą kontrolę nad skryptem, mogę go w dowolnym >> momencie wylączyć. Idealem było by gdybym mógł go równiez zatrzymac i >> wznowić. > To możnaby było zrobić albo w postaci osobnego procesu, który byś po > prostu ubił. Nie. Taki proces ubity w niewlasciwym miejscu może powodowac interesujące skutki uboczne. Dodatkowo musze wtedy korzystać z jakiegoś RMI. Przerost formy. >> c) absolutnie znakomite było by gdyby mechanizm udostepniał pracę >> krokowa skryptu. W Aplikacji bylo by coś w rodzaju >> script().doNextStatement() w pętli. Wyglądalo by to troche jak >> koprocedura. I idealnie bez normalnego stosu tak aby nie musiało to >> lecieć w osobnym wątku. > Co do tego się nie wypowiem bo nie wiem. Mogę uzyć stackless Pythona, ale doświadczenie jest drogie do przeprowadzenia, stad pytanie.
Re: Python w pythonie ale nie w oczywisty sposób
Author: AK
Date: Sat, 17 Feb 2018 13:07
Date: Sat, 17 Feb 2018 13:07
38 lines
2625 bytes
2625 bytes
Użytkownik "m" <mvoicem@gmail.com> napisał: > To, bym zrobił tak że importowałbym plik .py jako moduł i wywoływałbym > jakąś tam funkcję z tego modułu przekazując mu odpowiednie obiekty. > > Wadą jest absolutny brak bezpieczeństwa, tj skrypt napisany przez usera > ma absolutnie całkowity dostęp do bebechów twojej aplikacji i może > zrobić coś wbrew twoim intencjom. Mozna ta funkcje (czy caly skrypt poprzez import) wywolac poprzez eval czy exec podajac mu scope eval(expression[, globals=None[, locals=None]) exec(object[, globals=None[, locals=None]]) i wtedy bezpieczenstwo pelne. Mozna tez uzyc ktoregosc ze sprawdzonym pakietow plugino-owych (a jest ich od groma - nie moge polecic najlepszegop bo.. zwyczajnie nie mam w nich duzego doswiadczenia. Po prostu eval/exec ze scopem zawsze mi poki co wystarczal). Np. https://pypi.python.org/pypi/Yapsy - mysle ze ten az zanadto starczy http://pluginbase.pocoo.org/ https://pypi.python.org/pypi/extensions Lub samego modzic np tak/na podstawie tego (ale po co?:): http://blog.mathieu-leplatre.info/a-very-simple-and-stupid-plugin-system-in-python.html http://www.arl.army.mil/arlreports/2014/ARL-CR-0743.pdf https://pypi.python.org/pypi/simple_plugins https://github.com/thodnev/pluginlib/blob/master/pluginlib.py >> b) chciałbym miec całkowitą kontrolę nad skryptem, mogę go w dowolnym >> momencie wylączyć. Idealem było by gdybym mógł go równiez zatrzymac i >> wznowić. > > To możnaby było zrobić albo w postaci osobnego procesu, który byś po > prostu ubił. Wystarczy watek, czy nawet zwykla korutyna. AK
Re: Python w pythonie ale nie w oczywisty sposób
Author: AK
Date: Sat, 17 Feb 2018 13:31
Date: Sat, 17 Feb 2018 13:31
6 lines
1164 bytes
1164 bytes
Update: No i o OpenStack-owym stevedore zaponialem: https://pypi.python.org/pypi/stevedore ale to chyba zbyt duzy kaliber w stosunku do potrzeb. AK
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads