赞
踩
一直没有启用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
长风破浪会有时,直挂云帆济沧海!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。