unable to load: No module named 'woob_applications' in a `pipx` install - dependency on setuptools ?
When installing woob
with pipx
, the tool partially works with an error message:
# woob
usage: woob [--version] <command> [<args>]
Use one of this commands:
bands (unable to load: No module named 'woob_applications')
bank (unable to load: No module named 'woob_applications')
...
video (unable to load: No module named 'woob_applications')
weather (unable to load: No module named 'woob_applications')
For more information about a command, use:
$ man woob-<command>
or
$ woob <command> --help
or
# woob config
Traceback (most recent call last):
File "/root/.local/share/pipx/venvs/woob/lib/python3.12/site-packages/woob/launcher.py", line 52, in load_app
app_module = importlib.import_module("woob.applications.%s" % app)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 994, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/root/.local/share/pipx/venvs/woob/lib/python3.12/site-packages/woob/applications/config/__init__.py", line 19, in <module>
from .config import AppConfig
File "/root/.local/share/pipx/venvs/woob/lib/python3.12/site-packages/woob/applications/config/config.py", line 23, in <module>
from woob.tools.application.repl import ReplApplication
File "/root/.local/share/pipx/venvs/woob/lib/python3.12/site-packages/woob/tools/application/repl.py", line 33, in <module>
from woob.core import CallErrors
File "/root/.local/share/pipx/venvs/woob/lib/python3.12/site-packages/woob/core/__init__.py", line 21, in <module>
from .woob import Woob, WoobBase
File "/root/.local/share/pipx/venvs/woob/lib/python3.12/site-packages/woob/core/woob.py", line 31, in <module>
from woob.core.modules import ModulesLoader, RepositoryModulesLoader
File "/root/.local/share/pipx/venvs/woob/lib/python3.12/site-packages/woob/core/modules.py", line 26, in <module>
import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/root/.local/share/pipx/venvs/woob/bin/woob", line 8, in <module>
sys.exit(Launcher.run())
^^^^^^^^^^^^^^
File "/root/.local/share/pipx/venvs/woob/lib/python3.12/site-packages/woob/launcher.py", line 106, in run
return cls.run_app(sys.argv[1], sys.argv[2:])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/pipx/venvs/woob/lib/python3.12/site-packages/woob/launcher.py", line 60, in run_app
app_class = cls.load_app(app)
^^^^^^^^^^^^^^^^^
File "/root/.local/share/pipx/venvs/woob/lib/python3.12/site-packages/woob/launcher.py", line 54, in load_app
app_module = importlib.import_module("woob_applications.%s" % app)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1304, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1318, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'woob_applications'
It seems that pkg_resources
(which can be provided by setuptools
) is mandatory.
We should make this dependency explicit.
A working fix (except for smtp
module) is to inject setuptools
in the pipx
environment:
# pipx install woob
# pipx inject woob setuptools
# woob
usage: woob [--version] <command> [<args>]
Use one of this commands:
bands display bands and suggestions
...
smtp (unable to load: No module named 'woob_applications')
...
video search and play videos
weather display weather and forecasts
For more information about a command, use:
$ man woob-<command>
or
$ woob <command> --help