Module Python importować

Skripty Python LibreOffice su w třoch rozdźělnych wariantach: móža priwatne, zhromadnje wužite abo do dokumentow zasadźene być. Składuja so na rozdźělnych městnach, kotrež so w Organizacija a městno skriptow Python wopisuja. Zo bychu so module Python importowali, dyrbja jich městna za čas fungowanja znate być.

Tutón mechanizm so za module zwobraznjuje, kotrež na datajowym systemje a dokumenće bazuja. Wobchadźenje z wuwzaćemi je přehladnosće dla wuwostajene. Zapřijeće biblioteka abo zapis, skripty abo module so synonymnje wužiwaja. Makro Python so na funkciju znutřka modula poćahuje.

warning

Dźiwajće na to, zo so lokalny zapis <User Profile>/Scripts/python/pythonpath přeco přepytuje, hdyž so makro Python z <User Profile>/Scripts/python wuwjedźe.


Module datajoweho systema importować

Biblioteki LibreOffice Basic klasy, rutiny a wariable wobsahuja, module Python klasy, funkcije a wariable wobsahuja. Powšitkowne dźěle zasowužiwajomnych funkcijow Python abo UNO dyrbja so w Moje makra znutřka (User Profile)/Scripts/python/pythonpath składować. Biblioteki Python pomhaja module organizować, zo bychu kolizijam modulowych mjenow zadźěwali. Importujće uno.py znutřka zhromadnje wužitych modulow.

Priwatne abo zhromadnje wužite module

Priwatne a zhromadnje skripty Python dadźa so importować, hdyž jich zapisy so do šćežki časa fungowanja Python zapřijate. Za dalše informacije wo wuwostajenych posedźenskich klasach hlejće stronu Posedźenske informacije wotwołać.


        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
        import sys
            
        user_lib = Session().UserPythonScripts # Městno wužiwarskich skriptow
        if not user_lib in sys.path:
            sys.path.insert(0, user_lib) # Pytanskej šćežce přidać
        import screen_io as ui # modul 'screen_io.py' je w zapisu user_lib directory
        # Waš kod tu slěduje
    

Tutón přikład Python importowanemu modulej lokalnu wariablu XSCRIPTCONTEXT k dispoziciji staja


        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
        import uno, sys
            
        share_lib = Session.SharedPythonScripts() # Městno zhromadnje wužitych skriptow
        if not share_lib in sys.path:
            sys.path.insert(0, share_lib) # Pytanskej šćežce přidać
        from IDE_utils import ScriptContext # 'IDE_utils.py' zhromadnje skripty Python wobsahuje.
        XSCRIPTCONTEXT = ScriptContext(uno.getComponentContext)
        # Waš kod tu slěduje
    

Instalaciske module za nałoženja

Na rozdźěl wot priwatnych a zhromadnje wužitych skriptow dadźa so instalaciske skripty LibreOffice kóždy čas importuja. Nimo modulow Python LibreOffice uno a unohelper dadźa so druhe skripty w zapisu <installation_path>/program direktnje importować, 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 importować

Importowanje modula Python, kotryž je w dokumenće zasadźeny, so deleka zwobraznjuje. Wobchadźenje ze zmylkami so njewopisuje. Šćežka čas fungowanja Python so aktualizuje, hdyž dokument je wočinjeny a do začinjenja. Za dalše informacije hlejće Přez podawki wodźene makra, zo byšće zhonił, kak móžeće makra Python z dokumentowymi podawkami zwjazać.


        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
            
        import sys, uno
            
        def OnDocPostOpenLoadPython():
            """ Import modulow Python přihotować, hdyž so doc. začituje """
            PythonLibraries.loadLibrary('lib/subdir') # Pytanskej šćežce zapis přidać
            PythonLibraries.loadLibrary('my_gui', 'screen_io') # dir. & import screen_io přidać
            
        def OnDocQueryCloseUnloadPython():
            """ PYTHON_PATH porjedźić, hdyž so doc. začinja """
            PythonLibraries.unloadLibrary('my_gui') # Šćežku časa fungowanja Python porjedźić
            # Pokazka: importowane module w tutym přikładźe začitane wostawaja.
            
        class PythonLibraries():
            """ Wočinjak bibliotekow Python a importowak modulow
            
            adaptowany wot 'Bibliothèque de fonctions' wot Hubert Lambert
            na https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213 """
            def isImportedModule(module_name: str) -> bool:
                """ Lisćinu modulow časa fungowanja přepruwować """
                return (module_name in sys.modules.keys())
            def isLoadedLibrary(lib_name: str) -> bool:
                """ Wobsah PYTHON_PATH přepruwować """
                return (lib_name in sys.path)
            def loadLibrary(lib_name: str, module_name=None):
                """ PYTHON_PATH zapis přidać, pomjenowany modul importować """
                doc = XSCRIPTCONTEXT.getDocument()
                url = uno.fileUrlToSystemPath(
                    '{}/{}'.format(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 wotstronić """
                sys.path.remove(lib_name)
            
        g_exportedScripts = (OnDocPostOpenLoadPython, OnDocQueryCloseUnloadPython)
    

Prošu podpěrajće nas!