Amazon Linux下cookiecutter运行报错无法正常使用如何解决
问题根因
报错No module named html.entities是Python版本不匹配导致的:
html.entities是Python3标准库内置的模块,Python2版本不存在这个模块,Python2中对应处理HTML实体的模块名为htmlentitydefs- Amazon Linux默认yum源安装的cookiecutter是适配Python2的旧版本,运行时会调用系统默认的Python2解释器;而本地Mac环境运行cookiecutter时用的是Python3解释器,两边运行时环境不一致,所以同样的命令在Mac正常、在Amazon Linux报错。
- 使用的cookiecutter模板里加载的扩展是基于Python3语法编写的,依赖Python3的标准库模块,在Python2环境下加载就会触发模块找不到的异常。
修复步骤
- 先卸载系统自带的Python2版本cookiecutter,清除残留:
sudo yum remove -y cookiecutter
- 安装Python3及对应的pip包管理工具:
sudo yum install -y python3 python3-pip
- 基于Python3环境安装最新版cookiecutter,全局安装可加sudo,也可以自行创建Python虚拟环境隔离安装:
# 全局安装示例 sudo pip3 install --upgrade cookiecutter
- 安装完成后验证调用路径,确保执行的是Python3路径下的cookiecutter:
which cookiecutter # 正常输出应该类似 /usr/local/bin/cookiecutter 或者你的虚拟环境bin路径,不是Python2相关的目录
验证完成后重新执行原来的cookiecutter命令即可正常运行。
如果环境里同时存在Python2和Python3的cookiecutter,执行命令时可以直接用Python3显式调用,避免路径优先级问题:
python3 $(which cookiecutter) -f -v --no-input --config-file config.yaml https://bitbucket.org/project/cookiecutter-template.git --checkout master
内容的提问来源于stack exchange,提问作者TheWalkingMalteser
相关产品推荐
相关产品推荐

