Skip to content

ImportError: cannot import name 'csrc' from 'gsplat' #2727

@sblat021

Description

@sblat021

Whenever I run ns-train with gaussian-splatting or igs2gs I get the following error (it works fine when using nerfacto):


{NOTE] Not running eval iterations since only viewer is enabled.
Use --vis {wandb, tensorboard, viewer+wandb, viewer+tensorboard} to run with eval.
No Nerfstudio checkpoint to load, so training from scratch.
Disabled comet/tensorboard/wandb event writers
C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\torch\utils\cpp_extension.py:359: UserWarning: Error checking compiler version for cl:
[WinError 2] The system cannot find the file specified
warnings.warn(f'Error checking compiler version for {compiler}: {error}')
( ● ) gsplat: Setting up CUDA (This may take a few minutes the first time)INFO: Could not find files for the given pattern(s).
Printing profiling stats, from longest to shortest duration in seconds
VanillaPipeline.get_train_loss_dict: 0.6218
Trainer.train_iteration: 0.6218
Traceback (most recent call last):
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\gsplat\cuda_backend.py", line 56, in
from gsplat import csrc as C
ImportError: cannot import name 'csrc' from 'gsplat' (C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\gsplat_init
.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\runpy.py", line 87, in run_code
exec(code, run_globals)
File "C:\Users\micro\anaconda3\envs\nerfstudio\Scripts\ns-train.exe_main
.py", line 7, in
File "C:\Apps\nerfstudio\nerfstudio\scripts\train.py", line 262, in entrypoint
main(
File "C:\Apps\nerfstudio\nerfstudio\scripts\train.py", line 247, in main
launch(
File "C:\Apps\nerfstudio\nerfstudio\scripts\train.py", line 189, in launch
main_func(local_rank=0, world_size=world_size, config=config)
File "C:\Apps\nerfstudio\nerfstudio\scripts\train.py", line 100, in train_loop
trainer.train()
File "C:\Apps\nerfstudio\nerfstudio\engine\trainer.py", line 250, in train
loss, loss_dict, metrics_dict = self.train_iteration(step)
File "C:\Apps\nerfstudio\nerfstudio\utils\profiler.py", line 127, in inner
out = func(*args, **kwargs)
File "C:\Apps\nerfstudio\nerfstudio\engine\trainer.py", line 471, in train_iteration
_, loss_dict, metrics_dict = self.pipeline.get_train_loss_dict(step=step)
File "C:\Apps\nerfstudio\nerfstudio\utils\profiler.py", line 127, in inner
out = func(*args, **kwargs)
File "C:\Apps\nerfstudio\nerfstudio\pipelines\base_pipeline.py", line 304, in get_train_loss_dict
model_outputs = self._model(ray_bundle) # train distributed data parallel model if world_size > 1
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\torch\nn\modules\module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "C:\Apps\nerfstudio\nerfstudio\models\base_model.py", line 143, in forward
return self.get_outputs(ray_bundle)
File "C:\Apps\nerfstudio\nerfstudio\models\gaussian_splatting.py", line 591, in get_outputs
self.xys, depths, self.radii, conics, num_tiles_hit, _ = ProjectGaussians.apply( # type: ignore
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\torch\autograd\function.py", line 506, in apply
return super().apply(*args, **kwargs) # type: ignore[misc]
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\gsplat\project_gaussians.py", line 67, in forward
) = C.project_gaussians_forward(
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\gsplat\cuda_init
.py", line 7, in call_cuda
from ._backend import _C
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\gsplat\cuda_backend.py", line 79, in
_C = load(
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\torch\utils\cpp_extension.py", line 1284, in load
return _jit_compile(
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\torch\utils\cpp_extension.py", line 1509, in _jit_compile
_write_ninja_file_and_build_library(
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\torch\utils\cpp_extension.py", line 1611, in _write_ninja_file_and_build_library
_write_ninja_file_to_build_library(
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\torch\utils\cpp_extension.py", line 2048, in _write_ninja_file_to_build_library
_write_ninja_file(
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\site-packages\torch\utils\cpp_extension.py", line 2188, in _write_ninja_file
cl_paths = subprocess.check_output(['where',
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\subprocess.py", line 415, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "C:\Users\micro\anaconda3\envs\nerfstudio\lib\subprocess.py", line 516, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['where', 'cl']' returned non-zero exit status 1.

Steps to reproduce the behavior:

  1. After running COLMAP I run : ns-train gaussian-splatting --data output
  2. First few steps seem to work fine and then it crashes once it gets to: Trainer.train_iteration
  3. See error message above

Expected behavior
I expect the COLMAP data to be trained using the gaussian-splatting or igs2gs model.

Additional context
I followed the installation instructions exactly.

After nerfstudio dependencies I installed gsplat using:
pip install git+https://github.com/nerfstudio-project/gsplat.git

After that I installed nerfstudio following instructions:
git clone https://github.com/nerfstudio-project/nerfstudio.git
cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .

Visual Studio 2019 is installed including Desktop development with C+.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions