Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.lang.python > #87 > unrolled thread

Python w pythonie ale nie w oczywisty sposób

Started bySebastian Biały <heby@poczta.onet.pl>
First post2018-02-17 09:35 +0100
Last post2018-02-17 14:31 +0100
Articles 5 — 3 participants

Back to article view | Back to pl.comp.lang.python


Contents

  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

#87 — Python w pythonie ale nie w oczywisty sposób

FromSebastian Biały <heby@poczta.onet.pl>
Date2018-02-17 09:35 +0100
SubjectPython 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]


#90

Fromm <mvoicem@gmail.com>
Date2018-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]


#91

FromSebastian Biały <heby@poczta.onet.pl>
Date2018-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]


#92

From"AK" <nobody@nowhere.net>
Date2018-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]


#94

From"AK" <nobody@nowhere.net>
Date2018-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