Skip to content

ImportError when startup script imports bluesky #347

Description

@ddkohler

When I try to build a list of devices and scans with a script, and that script imports from bluesky, e.g.

/startup.py

from bluesky.preprocessors import baseline_decorator

Running qserver-list-plans-devices --startup-script startup.py fails, trying to import numpy again within a multiprocessing process:

Traceback (most recent call last):
  File "/usr/local/lib/python3.14/site-packages/bluesky_queueserver/manager/gen_lists.py", line 218, in run
    existing_plans, existing_devices, _, _ = existing_plans_and_devices_from_nspace(
                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        nspace=nspace, ignore_invalid_plans=ignore_invalid_plans, max_depth=device_max_depth
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.14/site-packages/bluesky_queueserver/manager/profile_ops.py", line 3416, in existing_plans_and_devices_from_nspace
    devices_in_nspace = devices_from_nspace(nspace)
  File "/usr/local/lib/python3.14/site-packages/bluesky_queueserver/manager/profile_ops.py", line 765, in devices_from_nspace
    if is_device(obj):
       ~~~~~~~~~^^^^^
  File "/usr/local/lib/python3.14/site-packages/bluesky_queueserver/manager/profile_ops.py", line 680, in is_device
    from bluesky.protocols import Flyable, Readable
  File "/usr/local/lib/python3.14/site-packages/bluesky/__init__.py", line 3, in <module>
    from .preprocessors import SupplementalData
  File "/usr/local/lib/python3.14/site-packages/bluesky/preprocessors.py", line 6, in <module>
    from bluesky.protocols import Locatable
  File "/usr/local/lib/python3.14/site-packages/bluesky/protocols.py", line 5, in <module>
    from event_model.documents import Datum, StreamDatum, StreamResource
  File "/usr/local/lib/python3.14/site-packages/event_model/__init__.py", line 33, in <module>
    import numpy
  File "/usr/local/lib/python3.14/site-packages/numpy/__init__.py", line 112, in <module>
    from numpy.__config__ import show_config
  File "/usr/local/lib/python3.14/site-packages/numpy/__config__.py", line 4, in <module>
    from numpy._core._multiarray_umath import (
    ...<3 lines>...
    )
  File "/usr/local/lib/python3.14/site-packages/numpy/_core/__init__.py", line 24, in <module>
    from . import multiarray
  File "/usr/local/lib/python3.14/site-packages/numpy/_core/multiarray.py", line 11, in <module>
    from . import _multiarray_umath, overrides

ImportError: cannot load module more than once per process

I've got a simple reproduction of the issue as a docker container. Full docker workflow log shown here.

I am using bluesky==1.15.0, bluesky-queueserver==0.0.24, numpy==2.4.4.

For numpy <2.4 the double import would raise a warning rather than an error, but the issue persists.
In our lab, we have pinned numpy <2.4 for now.

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