硬體:
- 配備 M1 芯片的 Apple Mac Book Pro
- Mac 作業系統 BigSur 11.6
問題:
長話短說修復!
我開始在我的 python 模塊中開發,使用python 請求庫通過 OAuth1連接一個 rest api 進行互動。
我正在使用 docker 容器在本地進行開發。
- Ubuntu 20.04
- 蟒蛇 3.8.x
- OpenSSL 1.1.1f
當我在我的代碼中運行 requests.delete 命令時,它總是回傳一個分段錯誤(SIGSEGV)。
致命的 Python 錯誤:分段錯誤
uj5u.com熱心網友回復:
經過大量除錯和搜索此問題后,我發現在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 容器(具有錯誤依賴項的代碼)上的相同代碼有效。
我希望我能幫助一些人不要花太多時間來除錯和搜索這個問題。
最好的問候,并有一個愉快的周末!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/323209.html
標籤:Python 码头工人 蟒蛇请求 openssl 苹果-m1
