freeswitch启用mod_python3

一直没有启用mod_python3模块,今天来配置试一下。记录配置的过程。

1.yum  install python3-devel

    如果不执行这个命令,可能会报错:

    configure: error: Your python3 lacks threads support, can not build mod_python3

    或者就是找不到python的头文件。

2.安装python3,因为目前系统里用的是python2,索性就升级到python3吧。

    下面的版本你可以自己选择。

wget https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tar.xz 
解压
cd Python-3.*
sudo ./configure --prefix=/usr/local/python3.10  --enable-shared CFLAGS=-fPIC
sudo make
sudo make install

   3.编译mod_python3模块。

      首先,进入到freeswitch源代码的根目录下,执行:

    ./configure --with-python3=/usr/bin/python3.10 

    执行完后,会自动生成mod_python3模块下的相匹配的makefile文件。

   下面有2种方法:

   (1)在源码目录下执行:make mod_python3-install

   (2)在freeswitch/src/mod/languages/mod_python3 目录下,执行:

             make

             make install

这2种方法,最后都会生成mod_python3文件。

4.加载模块:

   在fs_cli的控制台执行:load  mod_python3.

5.加载完毕,开始测试:

   为了省事,不自己写测试脚本了,就用源码里 自带的python_example.py 脚本。

  把python_example.py复制到/usr/local/freeswitch/scripts 目录下,

然后在控制台执行:python python_example  (注意,不要带.py后缀)

此时报错:

mod_python3.c:255 Error importing module
[ERR] mod_python3.c:168 Python Error by calling script "test": <class 'ModuleNotFoundError'>
Message: No module named 'freeswitch'
Exception: NoneType: None

经上网搜索,发现原来是python的默认目录不是scripts,而是要放到python3的某一个安装目录下。(这块有疑问,如果有不对的地方,请高人指点,谢谢)

在我的环境下,就是:/usr/lib/python3/site-packages

这个目录的来源是/usr/local/python3.10/lib/python3.10/site-packages

也就是刚才--prefix指定的安装目录

这个目录下,存放你自己的python脚本,并确保存在freeswitch.py 文件。

并设置一个python的运行目录:

export PYTHONPATH=/usr/lib/python3/site-packages

不然还是无法加载:No module named 'freeswitch'

6.然后重启freeswitch主程序,再次执行:python python_example 就成功了,执行结果如下:

---python python_example
w00t!
Event-Name: API
Core-UUID: dd19aae8-8fe6-11ee-8e74-e19207ef332f
FreeSWITCH-Hostname: xxx
FreeSWITCH-Switchname: xxx
FreeSWITCH-IPv4: xxx
FreeSWITCH-IPv6: %3A%3A1
Event-Date-Local: 2023-12-01%2009%3A35%3A00
Event-Date-GMT: Fri,%2001%20Dec%202023%2001%3A35%3A00%20GMT
Event-Date-Timestamp: xxx
Event-Calling-File: switch_loadable_module.c
Event-Calling-Function: switch_api_execute
Event-Calling-Line-Number: 2949
Event-Sequence: 1132
API-Command: python
API-Command-Argument: python_example


[NOTICE] mod_python3.c:216 Invoking py module: python_example
[DEBUG] mod_python3.c:308 Call python script 
[DEBUG] mod_python3.c:310 Finished calling python script 

7.结束了,end

   长风破浪会有时,直挂云帆济沧海!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值