FileNotFoundError when using weave with multiprocessing.Lock in an AWS Lambda function.

Hi,

I am running into an issue when trying to trace my OpenAI agent using W&B Weave inside an AWS Lambda function.

The application fails during initialization with a FileNotFoundError right after importing weave. The traceback shows that the error occurs when weave.flow.eval_imperative (part of the tracing/evaluation system) attempts to create a multiprocessing.Lock().

Any help would be greatly appreciated. Thank you!

Traceback

[ERROR] FileNotFoundError: [Errno 2] No such file or directory
Traceback (most recent call last):
  File "/var/lang/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 999, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/var/task/lambda-functions/trading_bot/lambda_function.py", line 7, in <module>
    from openai_agents.src.main import main
  File "/var/task/openai_agents/src/main.py", line 4, in <module>
    import weave
  File "/var/task/weave/__init__.py", line 14, in <module>
    from weave.flow.eval_imperative import EvaluationLogger
  File "/var/task/weave/flow/eval_imperative.py", line 206, in <module>
    global_scorer_cache = ScorerCache()
  File "/var/task/weave/flow/eval_imperative.py", line 192, in __init__
    self._cached_scorers_lock = Lock()
  File "/var/lang/lib/python3.12/multiprocessing/context.py", line 68, in Lock
    return Lock(ctx=self.get_context())
  File "/var/lang/lib/python3.12/multiprocessing/synchronize.py", line 169, in __init__
    SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx)
  File "/var/lang/lib/python3.12/multiprocessing/synchronize.py", line 57, in __init__
    sl = self._semlock = _multiprocessing.SemLock(