ITADN

Python 3.12 issue with moto 5.1.22 (resource must be a relative path with no parent directory components)

#9976Closednsultana-naitive 创建于 2026-04-17
debugging
Hi all, I am trying to run this on moto ``` > ssm.put_parameter( Name=name Value="test-password", Type="SecureString", ) ``` but I am receiving this stack trace when using Python 3.12 ``` .venv/lib/python3.12/site-packages/botocore/client.py:606: in _api_call return self._make_api_call(operation_name, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/context.py:123: in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/client.py:1076: in _make_api_call http, parsed_response = self._make_request( .venv/lib/python3.12/site-packages/botocore/client.py:1100: in _make_request return self._endpoint.make_request(operation_model, request_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/endpoint.py:119: in make_request return self._send_request(request_dict, operation_model) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/endpoint.py:200: in _send_request while self._needs_retry( .venv/lib/python3.12/site-packages/botocore/endpoint.py:360: in _needs_retry responses = self._event_emitter.emit( .venv/lib/python3.12/site-packages/botocore/hooks.py:412: in emit return self._emitter.emit(aliased_event_name, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/hooks.py:256: in emit return self._emit(event_name, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/hooks.py:239: in _emit response = handler(**kwargs) ^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/retryhandler.py:207: in __call__ if self._checker(**checker_kwargs): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/retryhandler.py:284: in __call__ should_retry = self._should_retry( .venv/lib/python3.12/site-packages/botocore/retryhandler.py:307: in _should_retry return self._checker( .venv/lib/python3.12/site-packages/botocore/retryhandler.py:363: in __call__ checker_response = checker( .venv/lib/python3.12/site-packages/botocore/retryhandler.py:247: in __call__ return self._check_caught_exception( .venv/lib/python3.12/site-packages/botocore/retryhandler.py:416: in _check_caught_exception raise caught_exception .venv/lib/python3.12/site-packages/botocore/endpoint.py:276: in _do_get_response responses = self._event_emitter.emit(event_name, request=request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/hooks.py:412: in emit return self._emitter.emit(aliased_event_name, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/hooks.py:256: in emit return self._emit(event_name, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/botocore/hooks.py:239: in _emit response = handler(**kwargs) ^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/moto/core/botocore_stubber.py:38: in __call__ response = self.process_request(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/moto/core/botocore_stubber.py:68: in process_request backend_dict = backends.get_backend(service) # type: ignore[call-overload] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .venv/lib/python3.12/site-packages/moto/backends.py:816: in get_backend return _import_backend( .venv/lib/python3.12/site-packages/moto/backends.py:367: in _import_backend If the package cannot be located or loaded, or it uses a PEP 302 loader which does not support get_data(), then None is returned. """ spec = importlib.util.find_spec(package) if spec is None: return None loader = spec.loader if loader is None or not hasattr(loader, 'get_data'): return None # XXX needs test mod = (sys.modules.get(package) or importlib._bootstrap._load(spec)) if mod is None or not hasattr(mod, '__file__'): return None # Modify the resource name to be compatible with the loader.get_data # signature - an os.path format "filename" starting with the dirname of # the package's __file__ parts = resource.split('/') if os.path.isabs(resource) or '..' in parts: > raise ValueError("resource must be a relative path with no " "parent directory components") E ValueError: resource must be a relative path with no parent directory components /opt/python/lib/python3.12/pkgutil.py:452: ValueError ``` Is this expected with Python 3.12?
关闭于 2026-05-16 5 条评论