ansible-cmdb icon indicating copy to clipboard operation
ansible-cmdb copied to clipboard

python 3.12: imp is deprecated in favor of importlib

Open dirks opened this issue 1 year ago • 5 comments

In src/ansiblecmdb/render.py imp is used, which has been deprecated in python 3.4 and removed in python 3.12, see https://docs.python.org/3.12/whatsnew/3.12.html#imp

import imp
[…]
    def _render_py(self, hosts, vars={}):
        module = imp.load_source('r', self.tpl_file)
        return module.render(hosts, vars=vars, tpl_dirs=self.tpl_dirs)

dirks avatar May 07 '24 09:05 dirks

This issue's title is a bit misleading. The title should be cannot run ansible-cmdb with Python 3.12 and the actual error message should be included as well (ModuleNotFoundError: No module named 'imp')

cwegener avatar Jun 24 '24 06:06 cwegener

Hi,

ansible-cmd still does not work in a virtualenv with Python 3.12.7.

Here is my virtualenv packages.txt

ansible==10.4.0
ansible-lint==24.9.2
ansible-cmdb==1.31
dnspython
netaddr
jmespath
powerline-status
powerline-gitstatus

And here is the error message when I try to convert the files on html.

ansible-cmdb -t html_fancy_split -p local_js=0 out/
Traceback (most recent call last):
  File "/home/user/Ansible/bin/../lib/ansiblecmdb/ansible-cmdb.py", line 22, in <module>
    import ansiblecmdb.render as render
  File "/home/user/Ansible/lib/python3.12/site-packages/ansiblecmdb/render.py", line 2, in <module>
    import imp
ModuleNotFoundError: No module named 'imp'

Is this suppose to be fix, or any workaround is provided ?

Thanks a lot.

jpoggi avatar Oct 11 '24 13:10 jpoggi

Up ! :-)

jpoggi avatar Nov 10 '24 17:11 jpoggi

Same here!

I'm using Ubuntu24 with venv

s-hell avatar Mar 05 '25 11:03 s-hell

The openSUSE package for ansible-cmdb started to fail building as Tumbleweed recently switched to Python 3.13. The error was in the failing tests.

Removing the import for imp from test/test.py solved the test issue.

But reading this issue I wonder why the tests succeeded, if the program itself does not work with 3.12 or higher...

johanneskastl avatar Mar 17 '25 16:03 johanneskastl

Any temp fix on this problem? Except downgrading to Python3.11

MateuszBeru avatar Jul 24 '25 08:07 MateuszBeru

I forked it: https://github.com/s-hell/ansible-cmdb

May be you can use this.

s-hell avatar Aug 05 '25 19:08 s-hell

Since debian trixie now uses a more modern python version (3.13.5), ansible-cmdb is now longer working on debian.

oxivanisher avatar Oct 04 '25 09:10 oxivanisher

is project dead?

adpavlov avatar Oct 30 '25 01:10 adpavlov

Any news on this ? Python >=3.12 is pretty common in modern linux distros so it makes ansible-cmdb obsolete on any modern distro

jdelvecchio avatar Nov 05 '25 09:11 jdelvecchio