Summary
When using the PyTorch backend, dp fails at import time with:
ModuleNotFoundError: No module named 'e3nn'
This happens even before a specific model or descriptor is explicitly selected by the user. The import chain goes through the regular PyTorch backend entry point and eventually imports the SEZM-related descriptor modules, which unconditionally import e3nn.
However, in pyproject.toml, e3nn appears to be declared only under the optional dpa-adapt extra, not as a regular PyTorch backend dependency.
This creates a dependency mismatch: the PyTorch backend can import code paths that require e3nn, but a normal PyTorch/DeepMD-kit installation does not necessarily install e3nn.
This is especially concerning because future mainstream users are likely to move toward DPA-4 / PyTorch-based workflows. If DPA-4-related or SEZM-related modules require e3nn, the installation path should make that dependency explicit, or at least clearly state it in the documentation.
Detailed Description
Environment
DeepMD-kit source build
-Python: 3.12.3
-PyTorch: 2.11.0+cu128
-torch.version.cuda: 12.8
-CUDA Toolkit: 12.8.93
-GPU backend: PyTorch
-DP_ENABLE_PYTORCH=1
-DP_ENABLE_TENSORFLOW=0
-DP_VARIANT=cuda
PyTorch and CUDA are available:
-torch: 2.11.0+cu128
-torch cuda: 12.8
-cuda available: True
Error
Running the PyTorch backend through dp fails with:
Traceback (most recent call last):
File "/opt/deepmd-kit/.venv/bin/dp", line 6, in <module>
sys.exit(main())
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/main.py", line 1135, in main
deepmd_main = BACKENDS[args.backend]().entry_point_hook
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/backend/pytorch.py", line 66, in entry_point_hook
from deepmd.pt.entrypoints.main import main as deepmd_main
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/entrypoints/main.py", line 41, in <module>
from deepmd.pt.entrypoints.compress import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/entrypoints/compress.py", line 13, in <module>
from deepmd.pt.model.model import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/model/__init__.py", line 22, in <module>
from deepmd.pt.model.atomic_model import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/atomic_model/__init__.py", line 20, in <module>
from .dipole_atomic_model import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/atomic_model/dipole_atomic_model.py", line 12, in <module>
from .dp_atomic_model import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/atomic_model/dp_atomic_model.py", line 16, in <module>
from deepmd.pt.model.descriptor.base_descriptor import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/descriptor/__init__.py", line 45, in <module>
from .sezm import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/descriptor/sezm.py", line 74, in <module>
from .sezm_nn import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/descriptor/sezm_nn/__init__.py", line 19, in <module>
from .block import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/descriptor/sezm_nn/block.py", line 43, in <module>
from .ffn import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/descriptor/sezm_nn/ffn.py", line 37, in <module>
from .grid_net import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/descriptor/sezm_nn/grid_net.py", line 48, in <module>
from .projection import (
File "/opt/deepmd-kit/.venv/lib/python3.12/site-packages/deepmd/pt/model/descriptor/sezm_nn/projection.py", line 22, in <module>
from e3nn.o3 import (
ModuleNotFoundError: No module named 'e3nn'
Relevant pyproject.toml section
In the current pyproject.toml, e3nn appears under the optional dpa-adapt extra:
dpa-adapt = [
"scikit-learn",
"dpdata",
"torch",
"ase",
"rdkit",
"e3nn",
]
But it does not appear in the main dependencies list.
As a result, a normal source installation with the PyTorch backend can produce an environment where deepmd.pt imports code requiring e3nn, but e3nn is not installed.
Why this is a problem
This is not a user-side model configuration issue. The failure occurs during import of the PyTorch backend entry point, before the user has explicitly requested a specific SEZM/DPA-4/DPA-ADAPT model.
If e3nn is required for normal PyTorch backend import, then it should be declared as a PyTorch backend dependency.
If e3nn is only required for specific models or descriptors, then the import should be lazy and only triggered when those models/descriptors are actually used. In that case, the error message should explicitly say which optional dependency group is required.
For example:
The SEZM/DPA-4 descriptor requires e3nn. Please install deepmd-kit[dpa-adapt] or install e3nn manually.
At present, the user only receives a generic Python import error.
Expected behavior
One of the following should happen:
- e3nn is included in the dependency set required for the PyTorch backend, if it is required for normal deepmd.pt import.
- SEZM/DPA-4/DPA-ADAPT-related imports are made lazy, so that users who do not use those descriptors do not need e3nn.
- The documentation explicitly states that PyTorch backend users who want to use DPA-4 / SEZM / DPA-ADAPT functionality must install the corresponding extra, and the runtime error should point to that extra.
Actual behavior
A normal PyTorch backend invocation fails with:
ModuleNotFoundError: No module named 'e3nn'
even though the missing dependency is only declared under an optional extra.
Suggested fixes
Possible fixes include:
Add e3nn to the PyTorch backend dependency group if it is now required by the default PyTorch backend import path.
Move e3nn-dependent imports to lazy import locations, so that e3nn is imported only when SEZM/DPA-4/DPA-ADAPT functionality is actually used.
Add an optional dependency group specifically for DPA-4 or SEZM, for example:
or include e3nn in the relevant PyTorch extra if DPA-4 is expected to become a mainstream PyTorch workflow.
Improve the error message so users are told exactly which extra to install.
Request
Please clarify whether e3nn is now a required dependency for the PyTorch backend, DPA-4, SEZM, or only DPA-ADAPT.
Given that DPA-4 / PyTorch workflows are likely to become mainstream for many users, this dependency path should be explicit and robust. The current behavior makes the PyTorch backend fail at import time with an undeclared runtime dependency. Also, please do a thorough update to the documentation according to these changes.
Further Information, Files, and Links
No response
Summary
When using the PyTorch backend, dp fails at import time with:
This happens even before a specific model or descriptor is explicitly selected by the user. The import chain goes through the regular PyTorch backend entry point and eventually imports the SEZM-related descriptor modules, which unconditionally import e3nn.
However, in pyproject.toml, e3nn appears to be declared only under the optional dpa-adapt extra, not as a regular PyTorch backend dependency.
This creates a dependency mismatch: the PyTorch backend can import code paths that require
e3nn, but a normal PyTorch/DeepMD-kit installation does not necessarily installe3nn.This is especially concerning because future mainstream users are likely to move toward DPA-4 / PyTorch-based workflows. If DPA-4-related or SEZM-related modules require
e3nn, the installation path should make that dependency explicit, or at least clearly state it in the documentation.Detailed Description
Environment
DeepMD-kit source build
-Python: 3.12.3
-PyTorch: 2.11.0+cu128
-torch.version.cuda: 12.8
-CUDA Toolkit: 12.8.93
-GPU backend: PyTorch
-DP_ENABLE_PYTORCH=1
-DP_ENABLE_TENSORFLOW=0
-DP_VARIANT=cuda
PyTorch and CUDA are available:
-torch: 2.11.0+cu128
-torch cuda: 12.8
-cuda available: True
Error
Running the PyTorch backend through dp fails with:
Relevant pyproject.toml section
In the current
pyproject.toml,e3nnappears under the optionaldpa-adaptextra:But it does not appear in the main dependencies list.
As a result, a normal source installation with the PyTorch backend can produce an environment where
deepmd.ptimports code requiringe3nn, bute3nnis not installed.Why this is a problem
This is not a user-side model configuration issue. The failure occurs during import of the PyTorch backend entry point, before the user has explicitly requested a specific SEZM/DPA-4/DPA-ADAPT model.
If
e3nnis required for normal PyTorch backend import, then it should be declared as a PyTorch backend dependency.If e3nn is only required for specific models or descriptors, then the import should be lazy and only triggered when those models/descriptors are actually used. In that case, the error message should explicitly say which optional dependency group is required.
For example:
At present, the user only receives a generic Python import error.
Expected behavior
One of the following should happen:
Actual behavior
A normal PyTorch backend invocation fails with:
even though the missing dependency is only declared under an optional extra.
Suggested fixes
Possible fixes include:
Add
e3nnto the PyTorch backend dependency group if it is now required by the default PyTorch backend import path.Move e3nn-dependent imports to lazy import locations, so that e3nn is imported only when SEZM/DPA-4/DPA-ADAPT functionality is actually used.
Add an optional dependency group specifically for DPA-4 or SEZM, for example:
or include
e3nnin the relevant PyTorch extra if DPA-4 is expected to become a mainstream PyTorch workflow.Improve the error message so users are told exactly which extra to install.
Request
Please clarify whether
e3nnis now a required dependency for the PyTorch backend, DPA-4, SEZM, or only DPA-ADAPT.Given that DPA-4 / PyTorch workflows are likely to become mainstream for many users, this dependency path should be explicit and robust. The current behavior makes the PyTorch backend fail at import time with an undeclared runtime dependency. Also, please do a thorough update to the documentation according to these changes.
Further Information, Files, and Links
No response