pytest を実行した時に AttributeError: module 're' has no attribute '_pattern_type' のエラーが出て、確認しています。
エラーの内容は下記になります。
tests/scenario_update/test_scenario_update.py:66: in setup_mock s3.create_bucket(Bucket=Config().s3_bucket()) /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/client.py:314: in _api_call return self._make_api_call(operation_name, kwargs) /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/client.py:598: in _make_api_call http, parsed_response = self._endpoint.make_request( /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/endpoint.py:148: in make_request return self._send_request(request_dict, operation_model) /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/endpoint.py:176: in _send_request while self._needs_retry(attempts, operation_model, request_dict, /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/endpoint.py:270: in _needs_retry responses = self._event_emitter.emit( /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/hooks.py:227: in emit return self._emit(event_name, kwargs) /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/hooks.py:359: in _emit return super(AliasedEventEmitter, self)._emit( /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/hooks.py:210: in _emit response = handler(**kwargs) /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/retryhandler.py:183: in __call__ if self._checker(attempts, response, caught_exception): /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/retryhandler.py:250: in __call__ should_retry = self._should_retry(attempt_number, response, /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/retryhandler.py:269: in _should_retry return self._checker(attempt_number, response, caught_exception) /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/retryhandler.py:316: in __call__ checker_response = checker(attempt_number, response, /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/retryhandler.py:222: in __call__ return self._check_caught_exception( /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/retryhandler.py:359: in _check_caught_exception raise caught_exception /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/endpoint.py:219: in _get_response http_response = self.http_session.send( /.pyenv/versions/3.9.10/lib/python3.9/site-packages/botocore/vendored/requests/sessions.py:573: in send r = adapter.send(request, **kwargs) /.pyenv/versions/3.9.10/lib/python3.9/site-packages/moto/packages/responses/responses.py:308: in unbound_on_send return self._on_request(adapter, request, *a, **kwargs) /.pyenv/versions/3.9.10/lib/python3.9/site-packages/moto/packages/responses/responses.py:238: in _on_request match = self._find_match(request) /.pyenv/versions/3.9.10/lib/python3.9/site-packages/moto/packages/responses/responses.py:199: in _find_match if not self._has_url_match(match, request.url): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <moto.packages.responses.responses.RequestsMock object at 0x7f25d7133730> match = {'callback': <moto.core.utils.convert_flask_to_responses_response object at 0x7f25d5959760>, 'content_type': 'text/plain', 'match_querystring': False, 'method': 'PUT', ...} request_url = 'https://amsui-devdev-ap-northeast-1-111122223333-main.s3.ap-northeast-1.amazonaws.com/' def _has_url_match(self, match, request_url): url = match['url'] if not match['match_querystring']: request_url = request_url.split('?', 1)[0] if _is_string(url): if match['match_querystring']: return self._has_strict_url_match(url, request_url) else: return url == request_url > elif isinstance(url, re._pattern_type) and url.match(request_url): E AttributeError: module 're' has no attribute '_pattern_type' /.pyenv/versions/3.9.10/lib/python3.9/site-packages/moto/packages/responses/responses.py:221: AttributeError
エラーが出たファイルが
/.pyenv/versions/3.9.10/lib/python3.9/site-packages/moto/packages/responses/responses.py
となっているので、site-packagesにインストールされているmotoライブラリのバージョンの問題かなと思ったのですが、motoのバージョンを上げることが正しい解決策でしょうか?
docker buildする際に、requirements.txtでライブラリをインストールしていて、motoのバージョンは1.1.13を指定しています。
Python3.6 だった時は moto のバージョン1.1.13 で問題なく動作していましたが、今回Pyrhon3.9に上げてから pytest で失敗するようになりました。
【追記】
試しにmoto の最新バージョン3.1.16 に上げたら
ImportError: cannot import name 'mock_rds_deprecated' from 'moto'
というエラーが出て、情報があまり出てこず、詰まっています。
上げるバージョンの問題でしょうか?
最新バージョン3.1.16 に上げた後に pip check で 依存関係を確認しましたが、問題ないみたいです。
bash-4.2# pip check No broken requirements found.
requirements.txt(moto の最新バージョン3.1.16 に上げた後)
requests boto3==1.9.201 moto==3.1.16 mock==2.0.0 pytest==3.2.2 pytest-cov==2.5.1 pytest-mock==1.6.3 pytest-pep8==1.0.6 pytest-pythonpath==0.7.1 pycrypto
回答1件
あなたの回答
tips
プレビュー