Python: Module importěrowaś

Wopśimjeśe

# Module Python importěrowaś

Daju skripty Python LibreOffice w tśich rozdźělnych wariantach: mógu priwatne, zgromadnje wužyte abo do dokumentow zasajźone byś. Składuju se na rozdźělnych městnach, kótarež se w Organizacija a městno skriptow Python wopisuju. Aby se module Python importěrowali, muse jich městna za cas wužywanja znate byś.

Toś ten mechanizm se za module znaglědnja, kótarež na datajowem systemje a dokumenśe bazěruju. Wobchad z wuwześami jo pśeglědnosći dla wuwóstajone. Zapśimjeśe biblioteka abo zapis, skripty abo module se synonymnje wužywaju. Makro Python se na funkciju w modulu póśěgujo.

Źiwajśo na to, až se lokalny zapis <User Profile>/Scripts/python/pythonpath pśecej pśepytujo, gaž se makro Python z <User Profile>/Scripts/python wuwjeźo.

## Module datajowego systema importěrowaś

Biblioteki LibreOffice Basic klase, rutiny a wariable wopśimuju, module Python klase, funkcije a wariable wopśimuju. Powšykne źěle zasejwužywajobnych funkcijow Python abo UNO muse se w Móje makra w (User Profile)/Scripts/python/pythonpath składowaś. Biblioteki Python pomagaju module organizěrowaś, aby kolizijam modulowych mjenjow zajźowali. Importěrujśo uno.py w zgromadnje wužytych modulach.

### Wósobinske abo zgromadnje wužyte module

Wósobinske a zgromadnje skripty Python daju se importěrowaś, gaž jich zapise se do sćažki casa wužywanja Python zapśimjete. Za dalšne informacije wó wuwóstajonych pósejźeńskich klasach glejśo bok Pósejźeńske informacije wótwołaś.

            # -*- coding: utf-8 -*-
            from __future__ import unicode_literals
            import sys

            user_lib = Session().UserPythonScripts # Městno wužywaŕskich skriptow
            if not user_lib in sys.path:
                sys.path.insert(0, user_lib) # Pytańskej sćažce pśidaś
            import screen_io as ui # modul 'screen_io.py' jo w zapisu user_lib directory
            # Waš kod how slědujo

Toś ten pśikład Python importěrowanemu moduloju lokalnu wariablu XSCRIPTCONTEXT k dispoziciji staja

            # -*- coding: utf-8 -*-
            from __future__ import unicode_literals
            import uno, sys

            share_lib = Session.SharedPythonScripts() # Městno zgromadnje wužytych skriptow
            if not share_lib in sys.path:
                sys.path.insert(0, share_lib) # Pytańskej sćažce pśidaś
            from IDE_utils import ScriptContext # 'IDE_utils.py' zgromadnje skripty Python wopśimujo.
            XSCRIPTCONTEXT = ScriptContext(uno.getComponentContext)
            # Waš kod how slědujo

### Instalaciske module za nałoženja

Na rozdźěl wót wósobinskich a zgromadnje wužytych skriptow daju se instalaciske skripty LibreOffice kuždy cas importěruju. Mimo modulow Python LibreOffice uno a unohelper daju se druge skripty w zapisu <installation_path>/program direktnje importěrowaś, na pśikład modul msgbox.

Z konsolu Python:

>>> import msgbox, uno

>>> myBox = msgbox.MsgBox(uno.getComponentContext())

>>> myBox.addButton("okay")

>>> myBox.renderFromButtonSize()

>>> myBox.numberOflines = 2

>>> print(myBox.show("A small message",0,"Dialog title"))

## Dokumentowy modul importěrowaś

Importěrowanje modula Python, kótaryž jo w dokumenśe zasajźony, se dołojce znaglědnja. Wobchad ze zmólkami se njewopisujo. Sćažka cas wužywanja Python se aktualizěrujo, gaž dokument jo wócynjony a do zacynjanja. Za dalšne informacije glejśo Přśztšojenja wóźone makra, aby zgónił, kak móžośo makra Python z dokumentowymi tšojenjami zwězaś.

            # -*- coding: utf-8 -*-
            from __future__ import unicode_literals

            import sys, uno, zipimport

            def OnDocPostOpenLoadPython(event = None):
                """ Import modulow Python pśigótowaś, gaž se doc. zacytujo """
                PythonLibraries.loadLibrary('lib/subdir') # Pytańskej sćažce zapis pśidaś
                PythonLibraries.loadLibrary('my_gui', 'screen_io') # dir. & import screen_io pśidaś

            def OnDocQueryCloseUnloadPython(event = None):
                """ PYTHON_PATH pórěźiś, gaž se doc. zacynja """
                PythonLibraries.unloadLibrary('my_gui') # Sćažku casa wužywanja Python pórěźiś
                # Pokazka: importěrowane module w toś tom pśikłaźe zacytane wóstawaju.

            class PythonLibraries():
                """ Wótcynjak bibliotekow Python a importěrowak modulow

                adaptěrowany wót 'Bibliothèque de fonctions' wót Hubert Lambert
                na https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213 """
                def isImportedModule(module_name: str) -> bool:
                    """ Lisćinu modulow casa wužywanja pśeglědowaś """
                    return (module_name in sys.modules.keys())
                def isLoadedLibrary(lib_name: str) -> bool:
                    """ Wopśimjeśe PYTHON_PATH pśeglědowaś """
                    url = uno.fileUrlToSystemPath(
                        f'{doc.URL}/Scripts/python/{lib_name}' )
                    return (url in sys.path)
                def loadLibrary(lib_name: str, module_name=None):
                    """ PYTHON_PATH zapis pśidaś, pomjenjony modul importěrowaś """
                    doc = XSCRIPTCONTEXT.getDocument()
                    url = uno.fileUrlToSystemPath(
                        f'{doc.URL}/Scripts/python/{lib_name}' )
                    if not url in sys.path:
                        sys.path.insert(0, url)
                    if module_name and not module_name in sys.modules.keys():
                        return zipimport.zipimporter(url).load_module(module_name)
                def unloadLibrary(lib_name: str):
                    """ zapis z PYTHON_PATH wótwónoźeś """
                    doc = XSCRIPTCONTEXT.getDocument()
                    url = uno.fileUrlToSystemPath(
                        f'{doc.URL}/Scripts/python/{lib_name}' )
                    sys.path.remove(url)

            g_exportedScripts = (OnDocPostOpenLoadPython, OnDocQueryCloseUnloadPython)

Pódobne temy

Pósejźeńske informacije wobstaraś

Programěrowanje ze skriptami Python

Organizacija a městno skriptow Python

Glejśo Pśisłuchak Python napóraś za pśikłady pśez tšojenje wóźonych makrow.

Pšosym pódprějśo nas!