Skip to content

[tune] ImportError: cannot import name '_default_registry' #1716

@robertnishihara

Description

@robertnishihara

I'm seeing this on a development branch, but I suspect it could occur more generally.

It occurs every once in a while when running

python python/ray/tune/test/trial_runner_test.py

The error is

Traceback (most recent call last):
  File "/home/ubuntu/ray/python/ray/worker.py", line 1694, in fetch_and_execute_function_to_run
    function = pickle.loads(serialized_function)
  File "/home/ubuntu/ray/python/ray/tune/registry.py", line 12, in <module>
    from ray.tune.trainable import Trainable, wrap_function
  File "/home/ubuntu/ray/python/ray/tune/__init__.py", line 6, in <module>
    from ray.tune.tune import run_experiments
  File "/home/ubuntu/ray/python/ray/tune/tune.py", line 8, in <module>
    from ray.tune.hyperband import HyperBandScheduler
  File "/home/ubuntu/ray/python/ray/tune/hyperband.py", line 8, in <module>
    from ray.tune.trial_scheduler import FIFOScheduler, TrialScheduler
  File "/home/ubuntu/ray/python/ray/tune/trial_scheduler.py", line 5, in <module>
    from ray.tune.trial import Trial
  File "/home/ubuntu/ray/python/ray/tune/trial.py", line 15, in <module>
    from ray.tune.registry import _default_registry, get_registry, TRAINABLE_CLASS
ImportError: cannot import name '_default_registry'

It looks to me like the issue is some circular imports.

registry imports tune, which imports hyperband, which imports trial_scheduler, which imports trial, which imports _default_registry from registry. The problem is that this is all triggered by the import registry command which hasn't defined _default_registry yet because it's defined at the end of the file... somehow we need to break this cyclic import.

One solution mentioned by @ericl is to make one of the imports lazy.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething that is supposed to be working; but isn't

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions