在python docker中安裝ESL庫

概述

功能需求,把python腳本移植到docker中。

因為python腳本中有使用freeswitch的ESL接口,所以需要安裝python-ESL依賴庫。

本文記錄在python:3.10.14-slim的docker鏡像上編譯安裝python-ESL依賴庫的流程。

環境

docker engine: Version 24.0.6

docker images: python:3.10.14-slim

docker準備

docker hub拉取python鏡像。

sudo docker pull python:3.10.14-slim

啟動docker容器,版本使用centos7。

sudo docker run -itd --name python.3.10.14-httpapi python:3.10.14-slim

sudo docker exec -it python.3.10.14-httpapi bash

以下步驟均為docker容器“python.3.10.14-httpapi”內部操作。

系統工具

在python容器中安裝相關工具。

apt-get update

apt-get -y install swig gcc g++

安裝失敗

在python容器中直接使用pip安裝“python-ESL”庫會失敗。

pip install python-ESL

Using cached python-ESL-1.4.18.tar.gz (40 kB)

...

error: subprocess-exited-with-error

...

swig -python -classic -c++ -DMULTIPLICITY -threads -I. -o ESL_wrap.cpp ESL.i

Deprecated command line option: -classic. This option is no longer available.

error: command '/usr/bin/swig' failed with exit code 1

...

ERROR: Failed building wheel for python-ESL

從上面的報錯信息中,新版本的swig不支持參數“-classic”,也嘗試了稍低版本的Debian,swig3也一樣不支持該參數了。

修改源碼包

搜索源碼包“python-ESL-1.4.18.tar.gz”。

下載地址:https://pypi.org/project/python-ESL/

wget https://files.pythonhosted.org/packages/26/41/a4396267f6700ce4356425343d57fc0dc1bd5f7700b7dbc6b03c5d2be3af/python-ESL-1.4.18.tar.gz

tar -zxvf python-ESL-1.4.18.tar.gz

cd python-ESL-1.4.18

vi setup.py ##刪除行中的'-classic'選項

swig_opts=['-classic', '-c++', '-DMULTIPLICITY',

保存退出,重新對python-ESL-1.4.18目錄打包。

tar -zcvf python-ESL-1.4.18-2.tar.gz python-ESL-1.4.18

重新安裝

ESL依賴庫,將修改后的源碼包“python-ESL-1.4.18-2.tar.gz”拷貝進python-docker容器內,執行安裝。

宿主機執行拷貝。

sudo docker cp python-ESL-1.4.18-2.tar.gz python.3.10.14-httpapi:/root/

容器內執行安裝。

pip3 install /root/python-ESL-1.4.18-2.tar.gz

Installing collected packages: python-ESL

Successfully installed python-ESL-1.4.18

檢查pip列表。

pip list

Package Version

---------- -------

pip 23.0.1

python-ESL 1.4.18

setuptools 65.5.1

wheel 0.43.0

ESL庫安裝完成,就可以在容器中執行自己的python腳本了。

鏡像清理

apt-get -y remove swig gcc g++

apt-get -y autoremove

總結

python基礎鏡像更換為python:3.10.14-slim,鏡像大小只有150M左右。

使用python鏡像來運行外部腳本,脫離fs本身的docker容器限制。

空空如常

求真得真

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37599.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37599.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37599.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL的三種驅動類型

MySQL 支持多種驅動類型,常見的包括: MySQL Native Driver (mysqlnd): 這是MySQL官方推薦的驅動類型,它是PHP的一個內置擴展。mysqlnd 提供了更高的性能和更好的兼容性,支持MySQL 4.1及以上版本。 MySQL Improved Ext…

在.NET Core中,config和ConfigureServices的區別和作用

在.NET Core中,config和ConfigureServices是兩個不同的概念,它們在應用程序的啟動和配置過程中扮演著不同的角色。 ConfigureServices:這是ASP.NET Core應用程序中的一個方法,位于Startup類的內部。它的作用是配置依賴注入(DI)容器…

湘潭大學概率論總結

文章目錄 前言試卷結構反思第一個填空題某個大題矩估計和最大似然估計算方差最后 前言 自己其實寒假的時候就想學這個了,但是那個時候在acm訓練,就沒有學,但是3月份退隊了,還是沒有學,完全就是自己太拖延的原因&#…

淺談返利app架構設計

淺談返利app架構設計 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿!今天我們來探討返利App的架構設計,這是一個技術性的話題,我們將深入…

【ES】--Elasticsearch的翻頁詳解

目錄 一、前言二、from+size淺分頁1、from+size導致深度分頁問題三、scroll深分頁1、scroll原理2、scroll可以返回總計數量四、search_after深分頁1、search_after避免深度分頁問題一、前言 ES的分頁常見的主要有三種方式:from+size淺分頁、scroll深分頁、search_after分頁。…

基于Java微信小程序同城家政服務系統設計和實現(源碼+LW+調試文檔+講解等)

💗博主介紹:?全網粉絲10W,CSDN作者、博客專家、全棧領域優質創作者,博客之星、平臺優質作者、專注于Java、小程序技術領域和畢業項目實戰?💗 🌟文末獲取源碼數據庫🌟感興趣的可以先收藏起來,還…

Nginx配置達夢數據庫代理及Nginx模塊內容總結

Nginx 代理達夢數據庫配置 叨叨達夢數據庫代理Nginx模塊說明stream模塊main 全局塊event塊http塊server塊location塊 本文參考了 https://blog.csdn.net/qq_42402854/article/details/132843413 叨叨 由于公司網絡安全問題,應用服務器端開開放需要走策略申請&#…

C#面:舉列 a=10,b=15,在不用第三方變量的前提下,把a,b的值互換

要在不使用第三方變量的前提下交換a和b的值,可以使用異或運算。異或運算的特性是,對于兩個相同的數進行異或運算,結果為0;對于任意數與0進行異或運算,結果為該數本身。因此,可以通過多次異或運算來實現變量…

【Sublime】Sublime Text 中運行終端

Sublime Text 本身并不是一個終端仿真器,可以使用插件來在 Sublime Text 中集成終端功能。最常用的插件之一是“Terminal”。 使用“Terminal”插件在 Sublime Text 中啟動終端 以下是安裝和使用該插件的步驟: 安裝 Package Control: 如果你…

面試突擊:HashMap 源碼詳解

本文已收錄于:https://github.com/danmuking/all-in-one(持續更新) 數據結構 JDK1.8 之前 JDK1.8 之前 HashMap 采用 數組和鏈表 結合的數據結構。如下圖: HashMap 將 key 的 hashCode 經過擾動函數處理過后得到 hash 值&#…

網絡編程客戶端和服務端連接流程

服務器端:socket()-->bind( )-->listen()-->accept()-->read()/write()--->close()socket()//創建套接字 bind()//命名socket,分配套接字地址 listen()//監聽狀態,等待連接請求狀態 accept()//允許連接(被動連接) read()/writ…

java第二十九課 —— 斷點 | 零錢通項目

斷點調試(debug) 實際需求 在開發中,新手程序員在查找錯誤時,這時老程序員就會溫馨提示,可以用斷點調試步一步的看源碼執行的過程,從而發現錯誤所在。 重要提示:在斷點調試過程中,…

Open3D(C++) 刪除點云中重復的點

目錄 一、算法原理1、重疊點2、主要函數二、代碼實現三、結果展示本文由CSDN點云俠原創,原文鏈接。如果你不是在點云俠的博客中看到該文章,那么此處便是不要臉的爬蟲與GPT。 一、算法原理 1、重疊點 原始點云克隆一份 ??構造重疊區域 ??合并點云獲得重疊點 2、主要…

嫦娥六號平安回家,Smartbi非常榮幸參與中國航天項目

“小時不識月,呼作白玉盤。”李白的這句詩,承載了古人對月亮的美好想象與純真童趣。今天,當我們仰望夜空,那輪明月不僅是詩詞中的意象,更是科學探索的目標和夢想的寄托。 2024年6月25日14時07分,嫦娥六號返…

vxeTable反轉表格

文章目錄 前言 前言 如果遇到列為動態值&#xff0c;行相對固定的情況&#xff0c;這種時候就需要用到行列反轉&#xff0c;這里我以vxeTable表格為例。 直接上代碼 <vxe-gridref"tableRefRight":auto-resize"true":columns"dataColumn":dat…

數獨的解法

文后附有源代碼下載地址&#xff0c;大家有更好的算法&#xff0c;可以發上來交流下。 主要是數學方面的算法改進&#xff0c;所以大家務必基于單線程&#xff0c;不要搞多線程&#xff0c;對于數學改進&#xff0c;單線程變多線程沒有意義。 編譯環境&#xff1a;vs2022&…

ubuntu22.04 編譯安裝openssl C++ library

#--------------------------------------------------------------------------- # openssl C library # https://www.openssl.org/source/index.html #--------------------------------------------------------------------------- cd /opt/download # 下載openssl-3.0.13…

概率論中:二項分布和泊松分布有什么區別

二項分布和泊松分布都是概率論中常見的離散概率分布&#xff0c;但它們之間存在顯著的區別。以下是它們之間的主要區別&#xff0c;以清晰、分點的方式表示并歸納&#xff1a; 1. 定義與描述 二項分布&#xff1a;描述的是在n次獨立的伯努利試驗中成功的次數。每次試驗只有兩…

第5章_Modbus通訊協議

文章目錄 5.1 學習Modbus的快速方法5.1.1 寄存器速記5.1.2 協議速記 5.2 初識Modbus5.2.1 背景5.2.2 什么是Modbus&#xff1f;1. Modbus簡介2. Modbus特點3. Modbus常用術語4. Modbus事務處理 5.3 Modbus軟件與使用5.3.1 Modbus軟件簡介5.3.2 Modbus Poll&#xff08;主站設備…

原生小程序使用數據圖表

這里以使用ucharts為例 第一步&#xff1a;在已創建好的小程序項目根目錄下執行npm init來初始化項目 第二步&#xff1a;安裝所需的包 npm i qiun/wx-ucharts 第三步&#xff1a;構建&#xff1a;在小程序開發工具中&#xff0c;點擊工具->構建npm即可 此時會看見項目目錄中…