SWIG (Simplified Wrapper and Interface Generator) 是一个用于连接 C/C++ 代码与其他高级编程语言(如Python、Java、C# 等)的工具。它允许开发人员将现有的 C/C++ 代码封装成可以在其他语言中调用的接口,而无需手动编写大量的代码。
SWIG 的工作原理是,它读取 C/C++ 头文件,并根据这些头文件自动生成包装代码,用于将原生的 C/C++ 函数和数据结构映射到目标语言中。这使得开发人员可以利用现有的 C/C++ 代码库,并在其他语言中使用它们,而无需重新实现相同的功能。
SWIG 支持多种目标语言,包括但不限于 Python、Java、C#、Ruby、Perl、PHP 等,因此在跨平台开发和混合语言项目中非常有用。它提供了灵活的配置选项,允许开发人员根据项目的需要进行定制,并具有广泛的文档和社区支持。
因为要安装GPT学术优化这个项目GitHub - binary-husky/gpt_academic: 为GPT/GLM等LLM大语言模型提供实用化交互接口,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持Python和C++等项目剖析&自译解功能,PDF/LaTex论文翻译&总结功能,支持并行问询多种LLM模型,支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。,在安装gpt_academic依赖库时发现安装swig这里卡住,
于是尝试pip 单独安装swig
pip install swig
结果报错:
Installing build dependencies ... error
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python3.9 /tmp/pip-standalone-pip-nm1izwjw/__env_pip__.zip/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-94b1bbsb/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://mirror.baidu.com/pypi/simple -- 'setuptools>=64' wheel scikit-build 'setuptools_scm>=8'
cwd: None
Complete output (9 lines):
Looking in indexes: https://mirror.baidu.com/pypi/simple
Collecting setuptools>=64
为了解决问题而采取的措施步是:
1、 pkg install swig4 安装swig4版本
pkg安装好之后,发现python3.9下pip 安装swig还是失败。
2、使用python3.10版本的pip安装
怀疑是python3.9版本太低了,尝试换用python3.10版本的pip安装swig,结果报错:
checking for GNU M4 that supports accurate traces... configure: error: no acceptable m4 could be found in $PATH.
GNU M4 1.4.6 or later is required; 1.4.16 or newer is recommended.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for swig
Failed to build swig
ERROR: Could not build wheels for swig, which is required to install pyproject.toml-based projects
显然报错信息提示缺少GUN M4,于是pkg安装m4
3、 使用pkg install m4 命令来安装m4
pkg安装好m4后,再pip安装swig:
pip install swig ,乌拉,在经过了编译安装后,python下的swig终于安装成功了!