freeswitch使用python3
一、python安装
下载python
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz
创建安装目录
mkdir -p /usr/local/python3
解压
tar -zxvf Python-3.7.6.tgz
编译安装
首先需要gcc环境和zlib库为了方向键等不出现乱码还需要 readline-devel 包
yum -y install gcc
yum -y install zlib*
yum install readline-devel
其次 配置
cd Python-3.7.6
./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC --enable-optimizations
编译安装
make && make install
建立软链接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
测试安装
查看版本
[root@www local]# python3 --version
Python 3.7.5
[root@www local]#
二、安装mod_python
通过–with-python3指定python3的目录
./configure --with-python3=/usr/bin/python3
make && make install
出现错误
/usr/local/lib/libpython3.7m.a(call.o): relocation R_X86_64_32 against `.rodata.str1.8’ can not be used when making a shared object; recompile with -fPIC
大意就是目前这个python3.7的库是个静态库,不是所需要的动态库,需要重新编译一遍python
再编译参数之后添加参数--enable-shared CFLAGS=-fPIC
./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC --enable-optimizations
make clean
make && sudo make install
使用freeswitch加载python3模块
load mod_python3
问题解决
-
Could not find or use python3 distutils module: /usr/local/python3/bin/python3.7: error while loading shared libraries: libpython3.7m.so.1.0:
到python3的安装目录下找到libpython3.7m.so.1.0文件复制到对应的位置
[root@www python3.7]# cp libpython3.7m.so.1.0 /usr/local/lib64/ [root@www python3.7]# cp libpython3.7m.so.1.0 /usr/lib/ [root@www python3.7]# cp libpython3.7m.so.1.0 /usr/lib64/
python脚本测试
在freeswitch存放脚本的文件夹下创建python脚本test.py
from freeswitch import *
def fsapi(session, stream, env, args):
stream.write("hello")
在freeswitch控制台中执行python脚本,不用添加后缀
python test
输出
freeswitch@ROOT> python test
hello
2022-05-25 15:20:56.189437 66.07% [NOTICE] mod_python3.c:216 Invoking py module: test
2022-05-25 15:20:56.209433 66.07% [DEBUG] mod_python3.c:308 Call python script
2022-05-25 15:20:56.209433 66.07% [DEBUG] mod_python3.c:310 Finished calling python script
freeswitch@ROOT>