Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.lang.python > #87 > unrolled thread
| Started by | Sebastian Biały <heby@poczta.onet.pl> |
|---|---|
| First post | 2018-02-17 09:35 +0100 |
| Last post | 2018-02-17 14:31 +0100 |
| Articles | 5 — 3 participants |
Back to article view | Back to pl.comp.lang.python
Python w pythonie ale nie w oczywisty sposób Sebastian Biały <heby@poczta.onet.pl> - 2018-02-17 09:35 +0100
Re: Python w pythonie ale nie w oczywisty sposób m <mvoicem@gmail.com> - 2018-02-17 13:18 +0100
Re: Python w pythonie ale nie w oczywisty sposób Sebastian Biały <heby@poczta.onet.pl> - 2018-02-17 13:33 +0100
Re: Python w pythonie ale nie w oczywisty sposób "AK" <nobody@nowhere.net> - 2018-02-17 14:07 +0100
Re: Python w pythonie ale nie w oczywisty sposób "AK" <nobody@nowhere.net> - 2018-02-17 14:31 +0100
| From | Sebastian Biały <heby@poczta.onet.pl> |
|---|---|
| Date | 2018-02-17 09:35 +0100 |
| Subject | Python w pythonie ale nie w oczywisty sposób |
| Message-ID | <p68pi0$jk1$1@node2.news.atman.pl> |
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
[toc] | [next] | [standalone]
| From | m <mvoicem@gmail.com> |
|---|---|
| Date | 2018-02-17 13:18 +0100 |
| Message-ID | <5a881d8c$0$565$65785112@news.neostrada.pl> |
| In reply to | #87 |
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.
[toc] | [prev] | [next] | [standalone]
| From | Sebastian Biały <heby@poczta.onet.pl> |
|---|---|
| Date | 2018-02-17 13:33 +0100 |
| Message-ID | <p697fb$ko$1@node2.news.atman.pl> |
| In reply to | #90 |
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.
[toc] | [prev] | [next] | [standalone]
| From | "AK" <nobody@nowhere.net> |
|---|---|
| Date | 2018-02-17 14:07 +0100 |
| Message-ID | <p699g5$r5i$1@gioia.aioe.org> |
| In reply to | #90 |
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
[toc] | [prev] | [next] | [standalone]
| From | "AK" <nobody@nowhere.net> |
|---|---|
| Date | 2018-02-17 14:31 +0100 |
| Message-ID | <p69atg$tho$1@gioia.aioe.org> |
| In reply to | #92 |
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
[toc] | [prev] | [standalone]
Back to top | Article view | pl.comp.lang.python
csiph-web