Python3.10 Docker部署QuTip遇AttributeError错误求助
AttributeError when importing QuTiP in Python 3.10.9-slim Docker Container
问题重现
我通过以下命令启动Docker容器:
docker run -it --name qutip_portble python:3.10.9-slim bash
容器启动后执行以下命令安装依赖:
pip install qutip pip install matplotlib
但在Python中执行import qutip时触发错误:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.10/site-packages/qutip/__init__.py", line 106, in <module> from qutip.qobj import * File "/usr/local/lib/python3.10/site-packages/qutip/qobj.py", line 2526, in <module> import qutip.superop_reps as sr File "/usr/local/lib/python3.10/site-packages/qutip/superop_reps.py", line 74, in <module> _SINGLE_QUBIT_PAULI_BASIS = (identity(2), sigmax(), sigmay(), sigmaz()) File "/usr/local/lib/python3.10/site-packages/qutip/operators.py", line 508, in identity return qeye(dims) File "/usr/local/lib/python3.10/site-packages/qutip/operators.py", line 488, in qeye return Qobj(fast_identity(size), File "/usr/local/lib/python3.10/site-packages/qutip/fastsparse.py", line 389, in fast_identity return fast_csr_matrix((data,ind,ptr),shape=(N,N)) File "/usr/local/lib/python3.10/site-packages/qutip/fastsparse.py", line 55, in __init__ self.format = 'csr' AttributeError: can't set attribute 'format'
原因分析
这个错误源于QuTiP与scipy版本不兼容:较新的scipy版本中,csr_matrix的format属性已改为只读,但旧版QuTiP仍尝试直接修改该属性,导致报错。
解决方案
方案1:升级QuTiP到兼容版本
QuTiP 4.7.2及以上版本已修复该兼容性问题,执行以下命令安装:
pip install qutip>=4.7.2
方案2:固定scipy版本到兼容范围
如果需要使用特定旧版QuTiP,可以安装scipy 1.9.x及以下版本:
pip install scipy<=1.9.3 pip install qutip
优化建议:用Dockerfile固化环境
为避免重复配置,推荐编写Dockerfile来构建稳定的镜像:
FROM python:3.10.9-slim RUN pip install qutip>=4.7.2 matplotlib CMD ["bash"]
构建并运行容器:
docker build -t qutip_portable . docker run -it --name qutip_portable qutip_portable bash
内容的提问来源于stack exchange,提问作者F Baig
相关产品推荐
相关产品推荐

