部署GCP VM(Bitnami WordPress多站点)如何规避Python3不兼容警告?
解决Deployment Manager部署Bitnami WordPress-Multisite时的Python3兼容性错误
问题根源
你碰到的AttributeError: module 'types' has no attribute 'StringTypes'错误,本质是Bitnami的这个模板是基于Python2编写的——在Python2里types.StringTypes用来指代字符串类型(包含str和unicode),但Python3已经移除了这个属性,统一用str作为唯一的字符串类型。同时警告The template is incompatible with Python3也直接点明了模板的版本兼容性问题。
修复方案
方案1:临时切换到Python2运行时部署
如果不想修改模板代码,可以在部署时强制指定使用Python2运行时,让Deployment Manager用Python2解析模板:
gcloud deployment-manager deployments create YOUR_DEPLOYMENT_NAME --config YOUR_CONFIG_FILE.yaml --runtime python2
不过要注意:GCP已经逐步淘汰Python2的支持,这个方案只是临时应急,长期来看还是建议适配Python3。
方案2:修改模板代码适配Python3
这是更稳妥的长期方案,只需要修改software_status.py里的一处代码:
- 找到文件中出现
types.StringTypes的位置(根据报错信息是在_WaiterDependsOn函数内) - 将
types.StringTypes替换为str,或者为了保持原代码的元组判断语法,写成(str,):
原代码示例:
修改后:if isinstance(value, types.StringTypes):
或者:if isinstance(value, str):if isinstance(value, (str,)): - 保存修改后的文件,重新部署即可。
额外注意事项
如果模板里还有其他Python2专属语法(比如print语句而非函数、迭代器的next()方法旧写法等),可以参考官方迁移指南的要点逐一排查修复,确保模板完全适配Python3。
内容的提问来源于stack exchange,提问作者tintinve
相关产品推荐
相关产品推荐

