pythonamazon-web-servicesaws-lambda

AWS Lambda No module named 'regex._regex'


Ive been trying to run some code through AWS Lambda using python 3.9 but I keep bumping into an issue when I run my code. I keep getting the "No module named 'regex._regex'" Error. I had this issue a few days ago when working locally through PyCharm but I managed to fix that by installing a newer version of regex I think (honestly can't remember exactly what fixed it it took be all day to try and solve that problem). But now it works on PyCharm and I have also tested my code on VSCode and it works there too without any problems but for some reason every time I copy my file up to AWS Lambda to run it I get the error again. I've looked around and there have been other people that have had the error a while ago but they didn't come to any solutions there, and none of them worked for me either.

to be specific im importing the python-binance module, and within this module it tries to import regex, which succeeds for a few levels bouncing around the regex files importing other regex files until it just won't read the specific '_regex' file. the _regex file is a python file so maybe that has something to do with it but it works through PyCharm and VSCode so I don't know it would be any different in Lambda. I've got the regex files installed through pip normally (pip install regex) swell as in the same location as my python script is (pip install -t MyFile regex). after installing them they arn't nested in any other folders apart from the initial ones that they come in.

To be clear ive got a local folder which im writing my code and importing my packages to, which I then zip up and then upload to lambda Ive taken out that part of the code and taken out the import for python-binance (what is referring to import regex and therefore causing the problem) and all of my other packages work fine so its not the way ive got my packages stored in the directory.

Ive tried changing the version of Python that lambda is running to 3.8 and 3.7 swell and the issue is still there.

The Error:

{
  "errorMessage": "Unable to import module 'lambda_function': No module named 'regex._regex'",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "c59ea163-53bf-4b1a-8cc5-a4d23283cf0f",
  "stackTrace": []
}

Any help would be much appreciated.


Solution

  • The leading underscore in the _regex module indicates that it's a C extension. You may want to try downloading the wheel into your Lambda project, as described here: https://aws.amazon.com/premiumsupport/knowledge-center/lambda-python-package-compatible/