[英]Apple Mac Book Pro M1 Chip segmentation Error when using python requests library
长话短说修复!
我开始在我的 python 模块中开发,使用python 请求库通过 OAuth1 连接一个 rest api 以与之交互。
我正在使用 docker 容器在本地开发。
当我在我的代码中运行 requests.delete 命令时,它总是返回一个分段错误( SIGSEGV )。
致命的 Python 错误:分段错误
经过大量调试和搜索此问题后,我发现在ssl 库中发生错误。 这是如何解决该问题的切入点。
更新到最新的Python 3.9 版本并至少使用openssl==1.1.1g版本。
这是 Dockerfile 如何在 Ubuntu 20.04 上更新 Python 和 openssl。
FROM ubuntu:20.04
RUN apt update
# SET PYTHON 3.9 AS DEFAULT PYTHON VERSION ON UBUNTU
RUN apt install -y software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt -y install python3.9
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
RUN update-alternatives --config python3
WORKDIR /<your_work_dir>
COPY requirements.txt ./
RUN apt install -y pip \
&& pip install -r requirements.txt
# FROM HERE OPENSSL
RUN apt install -y wget
RUN wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
RUN tar -zxf openssl-1.1.1l.tar.gz
WORKDIR /<your_work_dir>/openssl-1.1.1l
RUN ./config
RUN make
RUN make install
RUN mv /usr/bin/openssl ~/tmp
RUN ln -s /usr/local/bin/openssl /usr/bin/openssl
RUN ldconfig
ENV LD_LIBRARY_PATH="/usr/local/lib:${LD_LIBRARY_PATH}"
使用 M1 芯片创建 docker 容器 ubuntu 实例时,该错误显然发生在该实例上。 在 Windows 机器上检查 Windows 创建的 docker 容器(具有错误依赖项的代码)上的相同代码有效。
我希望我能帮助一些人不要花太多时间来调试和搜索这个问题。
最好的问候,并有一个愉快的周末!
我有同样的问题,可以用你的解决方案解决。
我在 Mac M1 上使用 Docker、Flask、Python 和 Requests。
有时在对特定路径发出请求时,我得到:
Fatal Python error: Segmentation fault
Current thread 0x0000ffff9c931b40 (most recent call first):
File "/usr/local/lib/python3.6/ssl.py", line 642 in write
File "/usr/local/lib/python3.6/ssl.py", line 944 in send
File "/usr/local/lib/python3.6/ssl.py", line 975 in sendall
File "/usr/local/lib/python3.6/http/client.py", line 1006 in send
File "/usr/local/lib/python3.6/http/client.py", line 1046 in _send_output
File "/usr/local/lib/python3.6/http/client.py", line 1286 in endheaders
File "/usr/local/lib/python3.6/http/client.py", line 1337 in _send_request
File "/usr/local/lib/python3.6/http/client.py", line 1291 in request
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 387 in _make_request
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 672 in urlopen
File "/usr/local/lib/python3.6/site-packages/requests/adapters.py", line 449 in send
File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 646 in send
File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 533 in request
File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 60 in request
File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 116 in post
File "<stdin>", line 1 in <module>
Segmentation fault
要调试分段错误,请使用:
https://docs.python.org/3/library/faulthandler.html
https://blog.richard.do/2018/03/18/how-to-debug-segmentation-fault-in-python/
我有同样的错误,@eyllanesc 有正确的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.