The dotted notation is used for relative imports, meaning relative to a path in *sys.path*. lxml is installed in my user *site-packages* directory - there it is at the bottom on my system:
C:\Users\tom>py -c "import sys;print('\n'.join(sys.path))" C:\Users\tom\AppData\Local\Programs\Python\Python312\python312.zip C:\Users\tom\AppData\Local\Programs\Python\Python312\DLLs C:\Users\tom\AppData\Local\Programs\Python\Python312\Lib C:\Users\tom\AppData\Local\Programs\Python\Python312 C:\Users\tom\AppData\Roaming\Python\Python312\site-packages C:\Users\tom\AppData\Roaming\Python C:\Users\tom\AppData\Roaming\Python\Python312\site-packages\win32 C:\Users\tom\AppData\Roaming\Python\Python312\site-packages\win32\lib C:\Users\tom\AppData\Roaming\Python\Python312\site-packages\Pythonwin *C:\Users\tom\AppData\Local\Programs\Python\Python312\Lib\site-packages* lxml.html means find the *lxml* package and then the html subpackage *relative to it* (change paths for your system) starting at *C:\Users\tom\AppData\Local\Programs\Python\Python312\Lib\site-packages.* You can use dotted paths if your import subdirectories are set up right, which they are with lxml (change paths to suit your system) - import lxml.html PATH = r"C:\temp\freemind\basic_freemind.xml" htmltree = lxml.html.parse(PATH) print(htmltree) or this - import lxml.html as html PATH = r"C:\temp\freemind\basic_freemind.xml" htmltree = html.parse(PATH) print(htmltree) Read Sec 5.2 of the Python docs at https://docs.python.org/3/reference/import.html On Thursday, September 12, 2024 at 8:00:41 PM UTC-4 Félix wrote: > *(All this was tried with the Latest LXML version 5.3.0 )* > > I tried installing lxml with: > > pip install lxml > > Seems to have worked, but when importing a freemind file, the imported > lxml library does not have the 'html' member, and the import just errors > out. > > When exploring why the lxml library did not have any valid members, like > html or etree as per Leo uses it and was also in the official lxml docs, I > tried something : > > If I replace the import at the top of the leoImport.py file with : > > > *from lxml import html*instead of: > *import lxml* > > Then, replacing that line further down the file: > > *htmltree = lxml.html.parse(path)* > with this one: > > *htmltree = html.parse(path)* > ... makes everything works!! Wow! :) > > I'm a total newb with python so I'm wondering if someone can explain this, > and if they have the same behavior experience in Leo with importing > FreeMind (.mm or .mm.html files) in leo. > > Should I open an issue on github and suggest importing and using it this > way? > > > -- You received this message because you are subscribed to the Google Groups "leo-editor" group. To unsubscribe from this group and stop receiving emails from it, send an email to leo-editor+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/leo-editor/314242bc-042f-4c0e-b8c8-46d728733ed4n%40googlegroups.com.