[bug] AttributeError: module 'numpy' has no attribute 'int'
Describe the bug
Cannot install due to numpy incompatibility with networkx.
AttributeError: module 'numpy' has no attribute 'int'
Ansible role openwisp.openwisp2 version 22.5.3
RUNNING HANDLER [openwisp.openwisp2 : migrate timeseries database] ***************************************************************************************************************************
task path: /home/niziak/.ansible/roles/openwisp.openwisp2/handlers/main.yml:22
redirecting (type: modules) ansible.builtin.django_manage to community.general.django_manage
redirecting (type: modules) ansible.builtin.django_manage to community.general.django_manage
fatal: [openwisp.lan.spox.org]: FAILED! =>
{
"changed":false,
"cmd":[
"./manage.py",
"migrate_timeseries"
],
"msg":":stderr:
Traceback (most recent call last):
File \"/opt/openwisp2/./manage.py\", line 10, in <module>\n execute_from_command_line(sys.argv)
File \"/opt/openwisp2/env/lib/python3.11/site-packages/django/core/management/__init__.py\", line 419, in execute_from_command_line\n utility.execute()
File \"/opt/openwisp2/env/lib/python3.11/site-packages/django/core/management/__init__.py\", line 395, in execute
django.setup()\n File \"/opt/openwisp2/env/lib/python3.11/site-packages/django/__init__.py\", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File \"/opt/openwisp2/env/lib/python3.11/site-packages/django/apps/registry.py\", line 114, in populate
app_config.import_models()
File \"/opt/openwisp2/env/lib/python3.11/site-packages/django/apps/config.py\", line 301, in import_models
self.models_module = import_module(models_module_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
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 \"/opt/openwisp2/env/lib/python3.11/site-packages/openwisp_network_topology/models.py\", line 6, in <module>
from .base.topology import AbstractTopology
File \"/opt/openwisp2/env/lib/python3.11/site-packages/openwisp_network_topology/base/topology.py\", line 12, in <module>
from netdiff import NetJsonParser, diff
File \"/opt/openwisp2/env/lib/python3.11/site-packages/netdiff/__init__.py\", line 2, in <module>
from .parsers.batman import BatmanParser # noqa
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File \"/opt/openwisp2/env/lib/python3.11/site-packages/netdiff/parsers/batman.py\", line 2, in <module>
from .base import BaseParser
File \"/opt/openwisp2/env/lib/python3.11/site-packages/netdiff/parsers/base.py\", line 4, in <module>
import networkx
File \"/opt/openwisp2/env/lib/python3.11/site-packages/networkx/__init__.py\", line 115, in <module>
import networkx.readwrite
File \"/opt/openwisp2/env/lib/python3.11/site-packages/networkx/readwrite/__init__.py\", line 15, in <module>
from networkx.readwrite.graphml import *
File \"/opt/openwisp2/env/lib/python3.11/site-packages/networkx/readwrite/graphml.py\", line 314, in <module>
class GraphML(object):
File \"/opt/openwisp2/env/lib/python3.11/site-packages/networkx/readwrite/graphml.py\", line 346, in GraphML
(np.int, \"int\"), (np.int8, \"int\"),
^^^^^^
File \"/usr/lib/python3/dist-packages/numpy/__init__.py\", line 305, in __getattr__
raise AttributeError(__former_attrs__[attr])
AttributeError: module 'numpy' has no attribute 'int'.
`np.int` was a deprecated alias for the builtin `int`. To avoid this error in existing code, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:\n https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations. Did you mean: 'inf'?
",
"path":"/opt/openwisp2/env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"syspath":[
"/tmp/ansible_django_manage_payload_z25qg24_/ansible_django_manage_payload.zip",
"/usr/lib/python311.zip",
"/usr/lib/python3.11",
"/usr/lib/python3.11/lib-dynload",
"/usr/local/lib/python3.11/dist-packages",
"/usr/lib/python3/dist-packages",
"/usr/lib/python3.11/dist-packages"
]
}
Steps To Reproduce
- On fresh LXC Debian 12
- Try to install using latest ansible role
Expected behavior venv is used so all packages should have pinned or bounded versions to prevent such problems.
When numpy is downgraded in venv:
/opt/openwisp2/env/bin/pip install numpy==1.23.5
then ansible role can be started again and everything works.
Try with the latest master, the latest released version is not compatible with Debian 12.
Same error, Debian 12. Did you resolve this by using Master?
Same error, Debian 12. Did you resolve this by using Master?
The 22.05 release is not compatible with Debian 12. Use the development version as already suggested.
Should be fixed in the latest release. Please repoen if that's not the case. Thanks.