Docker中Debian Bookworm环境无法安装python-uwsgi求助
问题:pip安装uwsgi时出现TypeError(CFLAGS序列中存在NoneType)
我的Dockerfile内容
FROM python:3.10-slim-bookworm RUN apt update RUN apt install -y build-essential RUN pip install uwsgi
执行pip install uwsgi时的错误输出
[...] 2.882 Installing collected packages: uwsgi 2.882 Running setup.py install for uwsgi: started 3.154 Running setup.py install for uwsgi: finished with status 'error' 3.158 error: subprocess-exited-with-error 3.158 3.158 × Running setup.py install for uwsgi did not run successfully. 3.158 │ exit code: 1 3.158 ╰─> [31 lines of output] 3.158 /usr/local/lib/python3.10/site-packages/setuptools/_distutils/dist.py:264: UserWarning: Unknown distribution option: 'descriptions' 3.158 warnings.warn(msg) 3.158 running install 3.158 /usr/local/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. 3.158 warnings.warn( 3.158 using profile: buildconf/default.ini 3.158 detected include path: ['/usr/lib/gcc/x86_64-linux-gnu/12/include', '/usr/local/include', '/usr/include/x86_64-linux-gnu', '/usr/include'] 3.158 Patching "bin_name" to properly install_scripts dir 3.158 detected CPU cores: 4 3.158 Traceback (most recent call last): 3.158 File "<string>", line 2, in <module> 3.158 File "<pip-setuptools-caller>", line 34, in <module> 3.158 File "/tmp/pip-install-dsdnjyg_/uwsgi_05831e8091e9471fb325b94690dc4a2a/setup.py", line 117, in <module> 3.158 setup( 3.158 File "/usr/local/lib/python3.10/site-packages/setuptools/__init__.py", line 87, in setup 3.158 return distutils.core.setup(**attrs) 3.158 File "/usr/local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 185, in setup 3.158 return run_commands(dist) 3.158 File "/usr/local/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 201, in run_commands 3.158 dist.run_commands() 3.158 File "/usr/local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 968, in run_commands 3.158 self.run_command(cmd) 3.158 File "/usr/local/lib/python3.10/site-packages/setuptools/dist.py", line 1217, in run_command 3.158 super().run_command(command) 3.158 File "/usr/local/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 987, in run_command 3.158 cmd_obj.run() 3.158 File "/tmp/pip-install-dsdnjyg_/uwsgi_05831e8091e9471fb325b94690dc4a2a/setup.py", line 79, in run 3.158 uc.build_uwsgi(conf) 3.158 File "/tmp/pip-install-dsdnjyg_/uwsgi_05831e8091e9471fb325b94690dc4a2a/uwsgiconfig.py", line 325, in build_uwsgi 3.158 print("configured CFLAGS: %s" % ' '.join(cflags)) 3.158 TypeError: sequence item 14: expected str instance, NoneType found 3.158 [end of output] 3.158 3.158 note: This error originates from a subprocess, and is likely not a problem with pip. 3.159 error: legacy-install-failure 3.159 3.159 × Encountered error while trying to install package. 3.159 ╰─> uwsgi 3.159 3.159 note: This is an issue with the package mentioned above, not pip. 3.159 hint: See above for output from the failure. 3.295 3.295 [notice] A new release of pip is available: 23.0.1 -> 24.0 3.295 [notice] To update, run: pip install --upgrade pip
已尝试的操作
- 升级pip到24.0,错误格式变化但本质问题相同
- 切换
3.10-bullseye、3.9-bookworm基础镜像,错误依旧 - 从apt安装
uwsgi-plugin-python3,但该包不提供Python版uwsgi,不清楚两者关系
疑问:是否缺少某些开发包导致CFLAGS解析失败?
解决提示
补充编译依赖包:除
build-essential外,还需安装Python开发头文件和uwsgi依赖的正则库,替换原apt安装步骤:RUN apt update && apt install -y build-essential python3-dev libpcre3 libpcre3-devpython3-dev提供Python C扩展编译所需的头文件,是uwsgi编译的必要依赖libpcre3和libpcre3-dev是uwsgi默认依赖的正则表达式库,缺失可能导致编译参数检测异常
手动指定CFLAGS值:若仍出现NoneType错误,可在pip安装时显式设置CFLAGS环境变量,避免自动检测产生空值:
RUN CFLAGS="-O2 -fPIC" pip install uwsgi改用系统包安装uwsgi:如果不需要PyPI的特定版本,直接用apt安装完整的uwsgi及Python3插件更稳定:
RUN apt update && apt install -y uwsgi uwsgi-plugin-python3系统包的uwsgi通过插件支持Python3应用,无需再从pip安装uwsgi包,两者属于不同分发渠道,但功能一致,系统包通常更适配当前环境。
内容的提问来源于stack exchange,提问作者user3758232
相关产品推荐
相关产品推荐

