swyddfa / esbonio

A language server for working with Sphinx projects.

Home Page:https://docs.esbon.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unable to import module 'esbonio.lsp.rst.directives'

cjdb opened this issue · comments

I get the following error in Visual Studio Code on Arch Linux, but not macOS/Debian.

Error with Esbonio extension

[esbonio.lsp] Unable to import module 'esbonio.lsp.rst.directives'
Traceback (most recent call last):
  File "/home/cjdb/.local/lib/python3.11/site-packages/esbonio/lsp/__init__.py", line 386, in _load_module
    module = importlib.import_module(modname)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/cjdb/.local/lib/python3.11/site-packages/esbonio/lsp/rst/directives.py", line 9, in <module>
    import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'
[esbonio.lsp] Unable to import module 'esbonio.lsp.rst.roles'
Traceback (most recent call last):
  File "/home/cjdb/.local/lib/python3.11/site-packages/esbonio/lsp/__init__.py", line 386, in _load_module
    module = importlib.import_module(modname)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/cjdb/.local/lib/python3.11/site-packages/esbonio/lsp/rst/roles.py", line 7, in <module>
    import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'
[esbonio.lsp] Unable to import module 'esbonio.lsp.sphinx.directives'
Traceback (most recent call last):
  File "/home/cjdb/.local/lib/python3.11/site-packages/esbonio/lsp/__init__.py", line 386, in _load_module
    module = importlib.import_module(modname)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/cjdb/.local/lib/python3.11/site-packages/esbonio/lsp/sphinx/directives.py", line 3, in <module>
    import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'
[esbonio.lsp] Unable to import module 'esbonio.lsp.sphinx.roles'
Traceback (most recent call last):
  File "/home/cjdb/.local/lib/python3.11/site-packages/esbonio/lsp/__init__.py", line 386, in _load_module
    module = importlib.import_module(modname)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/cjdb/.local/lib/python3.11/site-packages/esbonio/lsp/sphinx/roles.py", line 7, in <module>
    import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'

I typically use the reStructured Text extension, but am able to replicate with the Esbonio one too.

System details

$ lsb_release -a
LSB Version:	n/a
Distributor ID:	Arch
Description:	Arch Linux
Release:	rolling
Codename:	n/a
$ python --version
Python 3.11.3
$ esbonio --version
v0.16.1
$ code --version
1.78.2
b3e4e68a0bc097f0ae7907b217c1119af9e03435
x64

Here are the Debian system details:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux rodete
Release:        rodete
Codename:       rodete
$ python --version
Python 3.10.9
$ esbonio --version
v0.16.1
$ code --version
1.78.0
252e5463d60e63238250799aef7375787f68b4ee
x64

It looks like Python and VS Code are a bit behind, but I can't really see why either of those would result in a module not being found?

It looks like pkg_resources is not available in your Python environment, which the current release of esbonio uses to load some data files it needs (though it won’t for much longer)

I think it’s been missed as an explicit dependency since it comes as part of setuptools which is (almost) always available.

I’m not sure how you are managing your Python dependencies but installing setuptools with pip (or perhaps pacman) should fix it for you 🤞

Thank you so much! This issue has been plaguing me for a few weeks now.