Python 3.10+ Linux环境下pycups安装及导入失败问题求助
在Ubuntu 20.04.06 LTS系统、Python 3.10.12环境下,执行import cups时出现报错:
ModuleNotFoundError: No module named 'cups'
尝试通过pip install pycups==2.0.1安装模块时,出现构建wheel失败的错误:
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for pycups
Running setup.py clean for pycups
Failed to build pycups
ERROR: Could not build wheels for pycups, which is required to install pyproject.toml-based projects
此前已尝试sudo apt-get install python3-cups安装1.9.73-3build1版本,但Python 3.10无法识别该模块;创建虚拟环境安装也遇到相同问题。该模块在Python 3.8环境下可正常使用。
1. 安装编译依赖
pycups需要系统的CUPS开发库和编译工具才能完成构建,先执行以下命令安装依赖:
sudo apt-get update sudo apt-get install libcups2-dev gcc python3-dev
2. 重新安装pycups
依赖安装完成后,尝试直接通过pip安装(不指定旧版本,优先安装兼容Python 3.10的版本):
pip install pycups
如果仍无法构建wheel,强制从源码编译安装:
pip install --no-binary :all: pycups
3. 适配系统安装的python3-cups(备选方案)
系统通过apt安装的python3-cups是针对Ubuntu默认Python 3.8版本的,可通过软链接让Python 3.10识别该模块:
- 找到
python3-cups的安装路径:
dpkg -L python3-cups | grep cups.py
通常输出为/usr/lib/python3/dist-packages/cups.py,同时会找到对应的编译扩展文件(如_cups.cpython-38-x86_64-linux-gnu.so)
- 找到Python 3.10的site-packages目录:
python3.10 -c "import site; print(site.getsitepackages()[0])"
示例输出可能为/usr/local/lib/python3.10/dist-packages或~/.local/lib/python3.10/site-packages
- 创建软链接:
# 链接cups.py模块 sudo ln -s /usr/lib/python3/dist-packages/cups.py /path/to/python3.10/site-packages/ # 链接编译扩展文件,注意替换文件名中的38为310 sudo ln -s /usr/lib/python3/dist-packages/_cups.cpython-38-x86_64-linux-gnu.so /path/to/python3.10/site-packages/_cups.cpython-310-x86_64-linux-gnu.so
完成后再次尝试import cups即可。
内容的提问来源于stack exchange,提问作者Gustavo Batista Felix

