英文:
AWS lambda throwing import error because of URLLIB
问题
I'm running a python script on AWS Lambda and it's throwing the following error:
{
"errorMessage": "Unable to import module 'app': urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with OpenSSL 1.0.2k-fips 26 Jan 2017. See: https://github.com/urllib3/urllib3/issues/2168",
"errorType": "Runtime.ImportModuleError",
"stackTrace": []
}
It was running perfectly an hour ago, and even after I have made no deployments, it seems to be failing.
My Python version is 3.7.
I'm only using urllib to parse and unquote URLs, namely:
from urllib.parse import urlparse
and
from urllib.parse import unquote
Like it's mentioned in the GitHub URL, I can upgrade my Python version, but doing so would break other things.
Are there any alternative libraries I can use to get the same result?
From the GitHub link, it shows urllib no longer supports OpenSSL < 1.1.1, but somehow in some of our higher environments, the same script is running without issues.
英文:
Im running a python script on aws lambda and its throwing the following error.
{
"errorMessage": "Unable to import module 'app': urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with OpenSSL 1.0.2k-fips 26 Jan 2017. See: https://github.com/urllib3/urllib3/issues/2168",
"errorType": "Runtime.ImportModuleError",
"stackTrace": [] }
It was running perfectly an hour ago , and even after I have made no deployments , it seems to be failing.
my python version is 3.7.
and Im only using urllib to parse and unquote urls .
namely
from urllib.parse import urlparse
and
from urllib.parse import unquote
like its mentioned in the GitHub url I can upgrade my python version, but doing so would break other things.
Are there any alternative librries I can use to get the same result?
from the GitHub link , it shows urllib no longer supports OpenSSL<1.1.1 but somehow some of our higher environments the same scripts is running without issues.
答案1
得分: 7
将我的requirement.txt
文件中的urllib3
版本指定为1.26.15,参考这个链接 https://github.com/urllib3/urllib3/issues/2168#issuecomment-1535838106 中的讨论解决了这个错误。
英文:
specifying my urllib3
to 1.26.15 in the requirement.txt
file based on this https://github.com/urllib3/urllib3/issues/2168#issuecomment-1535838106 thread fixed this error.
答案2
得分: 2
升级您的AWS Lambda函数运行时至Python 3.10,它应该能够正常工作。
英文:
Upgrade you AWS Lambda function runtime to Python 3.10 and it should work.
答案3
得分: 1
你可以通过在 requirements.txt 文件中指定 urllib 的较低版本来解决此问题。
requests
urllib3<2
英文:
You can resolve it by specifying the lower version of urllib in your requirements.txt file.
requests
urllib3<2
答案4
得分: 1
如果您查看错误消息中的GH问题,您会发现该问题仅出现在Python >=3.7但<3.10的版本中。
升级到Python 3.10,问题解决。
英文:
If you look at the GH issue in the error message, you'll see that the problem only occurs to Python >=3.7 but <3.10
upgrade to python 3.10 and problem solved
答案5
得分: 1
我因我的Pipenv文件中以下pip要求而遇到了这个问题:
requests = ">= 2.28.2, < 3"
出了什么问题:
- requests 依赖于 urllib3
- 在 requests 2.30 中,这个依赖关系发生了变化。
requests/setup.py v2.29.0: "urllib3>=1.21.1,<1.27"
requests/setup.py v2.30.0: "urllib3>=1.21.1,<3"
实际上,将 requests 2.29 升级到 2.30 的次要版本升级导致了 urllib3 版本从 1.x 升级到 2.x。这是不兼容的,需要系统上安装更新的 OpenSSL 库。
我的简单解决方案是将我的 requests
依赖项更改为
requests = ">= 2.28.2, < 2.29.0"
其他依赖于 urllib3 的 pip 依赖项可能会出现类似的错误,例如 bigtable
包等。
英文:
I encountered this because of the following pip requrement in my Pipenv file:
requests = ">= 2.28.2, < 3"
What went wrong:
- requests depends on urllib3
- this dependency changed in requests 2.30.
requests/setup.py v2.29.0: "urllib3>=1.21.1,<1.27"
requests/setup.py v2.30.0: "urllib3>=1.21.1,<3"
Effectively the minor version upgrade of reguests 2.29 to 2.30 caused a major version upgrade of urllib3 version 1.x to 2.x. Which is backward incompatile and required a newer OpenSSL library on the system.
My simple fix was to change my requests
dependency to
requests = ">= 2.28.2, < 2.29.0"
There will be similar errors with other pip dependencies which depend on urllib3. For example The bigtable
package and many more.
答案6
得分: 0
I hacked at this quite a bit and ended up doing a few things.
我花了相当多的时间来做这个,最终做了一些事情。
I'm using python 3.8.16
我正在使用Python 3.8.16
-
I installed the openssl11
-
我安装了openssl11
sudo yum install openssl11
sudo yum install openssl11
-
found the existing runtime.
-
找到了现有的运行时。
whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz
whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz
-
renamed the old openssl
-
重命名旧的openssl
sudo mv openssl openssl102
sudo mv openssl openssl102
-
symlinked the new version
-
创建了新版本的符号链接
ln -s openssl11 openssl
ln -s openssl11 openssl
-
in the appropriate build directory, i then rebuilt the target python modules under the supported version.
-
在适当的构建目录中,我重新构建了受支持版本下的目标Python模块。
python3 -m pip install --target . urllib3==1.26.15
python3 -m pip install --target . urllib3==1.26.15
英文:
I hacked at this quite a bit and ended up doing a few things.
I'm using python 3.8.16
-
I installed the openssl11
sudo yum install openssl11
-
found the existing runtime.
whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz
-
renamed the old openssl
sudo mv openssl openssl102
-
symlinked the new version
ln -s openssl11 openssl
-
in the appropriate build directory, i then rebuilt the target python modules under the supported version.
python3 -m pip install --target . urllib3==1.26.15
答案7
得分: 0
I specified the version of urllib3 in requirements.txt
file.
urllib3==1.26.15
as suggested by @devarshi-goswami in this answer.
Then I got another error ImportError: Cannot find module named WebOb
which was resolved by specifying WebOb==1.8.7
in the requirements.txt file.
Conclusion:
My requirements.txt file contains
urllib3==1.26.15
WebOb==1.8.7
英文:
I specified the version of urllib3 in requirements.txt
file.
urllib3==1.26.15
as suggested by @devarshi-goswami in this answer.
Then I got another error ImportError: Cannot find module named WebOb
which was resolved by specifying WebOb==1.8.7
in the requirements.txt file.
Conclusion:
My requirements.txt file contains
urllib3==1.26.15
WebOb==1.8.7
答案8
得分: 0
我不确定是什么导致了这个错误,但我可以通过将boto3
导入到我的函数的要求中来修复它。
英文:
I'm unsure what caused this error, but I could fix it by importing boto3
into my function's requirements.
答案9
得分: 0
我使用较旧版本的urllib库解决了这个问题,当我安装我代码所需的所有其他库时:
python -m pip install urllib3==1.26.16 --no-deps -t
英文:
I was able to resolve this issue using an older version of the urllib library when I was installing all the other libraries required by my code:
python -m pip install urllib3==1.26.16 --no-deps -t
答案10
得分: 0
我遇到了这个问题,对我有效的解决方法是在本地安装了 urllib
版本 1.26.16,并将其制作成 zip 文件,然后将这个 zip 文件添加到层中。我将其与 openai 一起使用,因为我们正在层中添加依赖项。
pip install openai urllib3==1.26.16
英文:
I have been facing this issue, what worked for me is that I have installed urllib
version 1.26.16 locally and made zip out of it, then added this zip in layers. I have used this in combination with openai and it worked since we are adding dependencies in layers.
pip install openai urllib3==1.26.16
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论