使用Python3.6创建virtualenv报错:module 'enum' has no attribute 'IntFlag'
解决virtualenv创建Python3.6虚拟环境时的
AttributeError: module 'enum' has no attribute 'IntFlag'错误 这个错误我之前部署旧项目时也踩过坑!问题根源很明确:你当前系统里的virtualenv是Python 2版本的,它在调用Python 3.6解释器时,会把Python 2的第三方enum包逻辑带进Python 3.6的环境里——而Python 2的enum包并没有IntFlag属性,但Python 3.6+的标准库enum是自带这个属性的,两者冲突就抛出了这个错误。
下面是两种可靠的解决方法:
方法一:使用Python3.6对应的virtualenv
先卸载系统中Python 2版本的virtualenv:
sudo pip2 uninstall virtualenv如果提示找不到包,说明系统里的virtualenv可能不是通过pip2安装的,可以跳过这一步直接进行下一步。
用Python3.6的pip安装适配的virtualenv:
/usr/bin/python3.6 -m pip install virtualenv最后用适配版本的virtualenv创建环境(推荐用模块调用的方式,避免PATH混淆):
/usr/bin/python3.6 -m virtualenv env_pcl或者你也可以直接指定解释器路径:
virtualenv -p /usr/bin/python3.6 env_pcl(前提是PATH里的
virtualenv已经是Python3.6安装的版本)
方法二:使用Python3.6自带的venv模块(更轻量化)
Python3.3及以上版本自带了venv模块,不需要额外安装第三方virtualenv,完全可以满足创建虚拟环境的需求,还能避免版本冲突:
/usr/bin/python3.6 -m venv env_pcl
这两种方法都能彻底解决你遇到的enum属性错误,根据自己的习惯选就行~
内容的提问来源于stack exchange,提问作者jia Jimmy
相关产品推荐
相关产品推荐

