获取 fcitx-qt5 源码 (fcitx-qt官网),编译源码,步骤如下:
cd file_path(为fcitx-qt5 解压后的文件夹路径)
mkdir build && cd build
cmake .. (报错 Could not find a package configuration file provided by "ECM" 则执行 sudo apt install extra-cmake-modules ,然后再次执行 cmake ..)
make
sudo make install
然后拷贝到qt目录下的 platforminputcontexts 目录
关于给当前环境下的pyqt安装fcitx支持的自动化脚本执行如下:
我的系统是 ubuntu的,脚本执行安装库的时候,使用了apt,如果没有apt,可以使用对应的工具。
import sys,os
import subprocess
try:
import PyQt5
except ImportError:
print('can\'t find pyqt5! exit')
sys.exit(-1)
ppath = PyQt5.__path__
if isinstance(ppath, list) and len(ppath) > 0:
ppath = ppath[0]
else:
print('pyqt5 path error! ')
sys.exit(-1)
p = subprocess.Popen(['apt','list'], stdout=subprocess.PIPE)
is_found = False
for tl in p.stdout.read().decode().split('\n'):
if tl.split('/')[0] == 'extra-cmake-modules':
is_found = True
if not is_found:
print('需要安装 extra-cmake-modules,请手动执行:\n\tsudo apt install extra-cmake-modules')
sys.exit(-1)
if not os.path.exists('fcitx-1t5'):
os.system('git clone https://gitee.com/hocker/fcitx-qt5')
if not os.path.exists('fcitx-qt5/build'):
os.system('mkdir fcitx-qt5/build')
ret = os.system('. ~/.bashrc && cd fcitx-qt5/build && cmake .. && make -j8')
# os.system('sudo make install')
ret |= os.system( 'cp fcitx-qt5/build/platforminputcontext/libfcitxplatforminputcontextplugin.so ' + os.path.join(ppath, 'Qt/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so'))
if ret != 0:
print('自动执行失败,需手动执行')
print('手动执行:\n\tcd fcitx-qt5/build && cmake .. && make -j8 &&sudo make install ')
print('执行成功后,然后执行:\n\t ' +'cp fcitx-qt5/build/platforminputcontext/libfcitxplatforminputcontextplugin.so ' + os.path.join(ppath, 'Qt/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so'))
如果上面脚本报错,可能是pyqt用 pip进行安装 ,我看了下用conda安装是没有 Qt/plugins/platforminputcontexts 这个目录的,用pip安装就有 Qt/plugins/platforminputcontexts,具体原因目前没有看,估计是这个目录对 pyqt 是可选的。
pip install pyqt5
如果还有问题,可以留言讨论。
感谢 《Linux下关于Qt无法调用fcitx的中文输入》博客,在其帮助下完成问题的定位并解决了问题。