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.

Reply via email to