widgetti / ipyvolume

3d plotting for Python in the Jupyter notebook based on IPython widgets using WebGL
MIT License
1.95k stars 236 forks source link

partially initialized module 'ipyvolume' has no attribute '_version' (most likely due to a circular import) #443

Open banxia688 opened 10 months ago

banxia688 commented 10 months ago
Snipaste_2024-01-21_20-21-02

I have no idea with this problem

T0bC commented 10 months ago

Same Issue:

Used this conda call to create the environment on a WSL Ubuntu:

conda create --solver=libmamba -n rapids-23.12 -c rapidsai -c conda-forge -c nvidia \ rapids=23.12 python=3.10 cuda-version=11.8 \ jupyterlab napari dask-cuda dask-image matplotlib scikit-image anaconda::notebook

then

pip install ipyvolume

import ipyvolume as ipv import numpy as np x, y, z, u, v, w = np.random.random((6, 1000))*2-1 ipv.quickquiver(x, y, z, u, v, w, size=5)

`--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[10], line 1 ----> 1 import ipyvolume as ipv 2 import numpy as np 3 x, y, z, u, v, w = np.random.random((6, 1000))*2-1

File ~/miniconda3/envs/rapids-23.12/lib/python3.10/site-packages/ipyvolume/init.py:8 6 from ipyvolume import datasets # noqa: F401 7 from ipyvolume import embed # noqa: F401 ----> 8 from ipyvolume.widgets import # noqa: F401, F403 9 from ipyvolume.transferfunction import # noqa: F401, F403 10 from ipyvolume.pylab import * # noqa: F401, F403

File ~/miniconda3/envs/rapids-23.12/lib/python3.10/site-packages/ipyvolume/widgets.py:30 22 from ipyvolume.traittypes import Image 23 from ipyvolume.serialize import ( 24 array_cube_tile_serialization, 25 array_serialization, (...) 28 texture_serialization, 29 ) ---> 30 from ipyvolume.transferfunction import TransferFunction 31 from ipyvolume.utils import debounced, grid_slice, reduce_size 34 _last_figure = None

File ~/miniconda3/envs/rapids-23.12/lib/python3.10/site-packages/ipyvolume/transferfunction.py:19 17 N = 1024 18 x = np.linspace(0, 1, N, endpoint=True) ---> 19 semver_range_frontend = "~" + ipyvolume._version.__version_js__ 22 @widgets.register 23 class TransferFunction(widgets.DOMWidget): 24 _model_name = Unicode('TransferFunctionModel').tag(sync=True)

AttributeError: partially initialized module 'ipyvolume' has no attribute '_version' (most likely due to a circular import)`

palec87 commented 4 months ago
  1. Unistalling other widgets such as plotly, k3d etc.
  2. Restart the kernel.

Import then worked, unfortunately the docs examples still do no show any plots. @T0bC, did it work for you in the end?

T0bC commented 4 months ago

@palec87

  1. Unistalling other widgets such as plotly, k3d etc.
  2. Restart the kernel.

Import then worked, unfortunately the docs examples still do no show any plots. @T0bC, did it work for you in the end?

I tried the same thing, but without success. I ended up using a different library. But I must admit that I'm still looking for a python library capable of displaying a 3D array of potentially 1000x1000x1000 voxels with alpha transparency. And the whole thing interactively in real time. I want to display a uCT dataset for segmentation processes without having to reduce the resolution. The software CTVox provided by the manufacturer seems to be able to do this, but unfortunately without pyhton integration.

palec87 commented 4 months ago

There you might run into hardware limitation and GPU would help a lot. Here is python CT framework with GPU support https://fast.eriksmistad.no/python-tutorial-mri-ct.html

Other, general use viewer to consider can be napari https://napari.org/stable/

I wanted zero install demos for students, so that it runs in notebooks/colabs. k3d worked for me in the end, but it is quite resource intensive, especially crashing colab NBs.