Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[commonmark] AttributeError: module 'commonmark' has no attribute 'Parser' #434

Open
CarstenGrohmann opened this issue Jan 26, 2024 · 0 comments

Comments

@CarstenGrohmann
Copy link

Hi,

After updating my Nikola installation to v8.3.0 the locally installed commonmark plugin fails.

$ nikola --version
[2024-01-26 22:06:19] ERROR: PluginManager: Plugin commonmark from /.../carstengrohmann.de/plugins/commonmark/commonmark.plugin (/.../carstengrohmann.de/plugins/commonmark/commonmark.py) threw an exception while creating the instance
Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/nikola/plugin_manager.py", line 215, in load_plugins
    plugin_object = plugin_class()
                    ^^^^^^^^^^^^^^
  File "/.../carstengrohmann.de/plugins/commonmark/commonmark.py", line 57, in __init__
    self.parser = commonmark.Parser()
                  ^^^^^^^^^^^^^^^^^
AttributeError: module 'commonmark' has no attribute 'Parser'
[2024-01-26 22:06:19] WARNING: PluginManager: Some plugins failed to load. Please review the above warning messages.
[2024-01-26 22:06:19] WARNING: PluginManager: You may need to update some plugins (from plugins.getnikola.com) or to fix their .plugin files.
[2024-01-26 22:06:19] WARNING: PluginManager: Waiting 2 seconds before continuing.
Nikola v8.3.0

I can well imagine that with the new Plugin Manager the search path of the modules has changed and the plugin imports itself.

try:
import commonmark
except ImportError:
commonmark = None # NOQA

This would explain the difference between the following tests with import commonmark && commonmark.Parser, if the command is executed once in the plugin directory and once outside.

$ pwd
/.../carstengrohmann.de/plugins/commonmark

$ ll
insgesamt 24
-rw-r--r-- 1 carsten carsten 1452 19. Okt 22:46 README.md
drwxr-xr-x 2 carsten carsten   40 20. Okt 20:28 __pycache__
-rw-r--r-- 1 carsten carsten  277 19. Okt 22:46 commonmark.plugin
-rw-r--r-- 1 carsten carsten 4184 19. Okt 22:46 commonmark.py
-rw-r--r-- 1 carsten carsten  495 19. Okt 22:46 conf.py.sample
-rw-r--r-- 1 carsten carsten   18 19. Okt 22:46 requirements.txt

$ python
Python 3.11.6 (main, Nov 14 2023, 09:36:21) [GCC 13.2.1 20230801] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import commonmark
>>> commonmark.Parser
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'commonmark' has no attribute 'Parser'
$ pwd
/.../carstengrohmann.de/plugins

$ ll
insgesamt 4
-rw-r--r-- 1 carsten carsten  25 25. Mai 2014  __init__.py
drwxr-xr-x 3 carsten carsten 134 20. Okt 20:28 commonmark
drwxr-xr-x 3 carsten carsten  18 25. Mai 2014  compile

$ python
Python 3.11.6 (main, Nov 14 2023, 09:36:21) [GCC 13.2.1 20230801] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import commonmark
>>> commonmark.Parser
<class 'commonmark.blocks.Parser'>

What do you think about this issue?

Regards,
Carsten

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant