Python IDE无法启动,命令行执行python触发TypeError错误求助
解决ArcGIS绑定Python2.7启动报错:TypeError: str() takes at most 1 argument (2 given)
这个问题我之前帮同事排查过,本质是ArcGIS自带的老版本Python2.7和系统编码环境变量冲突导致的,下面是具体的排查和解决步骤:
第一步:检查并清理冲突的环境变量
这是最常见的原因,系统里的PYTHONIOENCODING、LC_ALL或者LANG环境变量如果设置了非ASCII编码,就会触发这个错误:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「用户变量」和「系统变量」里找上述几个变量,如果存在,直接删除它们,或者把值改成
UTF-8、cp1252这类ASCII兼容的编码 - 重启命令提示符,再输入
python测试能不能正常启动
第二步:临时验证方案(不用修改环境变量)
如果不想马上改环境变量,可以先在命令行里临时清空可能冲突的变量:
set PYTHONIOENCODING= set LC_ALL= set LANG= python
如果这样能正常启动,那就说明确实是环境变量的问题,按第一步的方法永久修改即可。
第三步:修改site.py代码(环境变量无效时用)
如果上面的方法都不行,那可以直接修改Python自带的site.py文件来绕过这个错误:
- 找到报错里的文件路径:
C:\Python27\ArcGIS10.5\lib\site.py,用记事本或者VS Code打开它 - 定位到
encodings\__init__.py里报错的那一行(也就是encoding = str(encoding, "ascii")) - 把这一行改成:
或者改成Python2更规范的写法:encoding = str(encoding)encoding = encoding.decode("ascii") - 保存文件后,再尝试启动Python或者IDE
为什么会出现这个错误?
ArcGIS绑定的Python2.7版本比较陈旧,对系统编码环境的适配性差。当系统环境变量里的编码参数被传入Python后,它被当成了bytes对象,而Python2的str()函数只接受1个参数(Python3的str()才支持两个参数做编码转换),所以就触发了这个类型错误。
内容的提问来源于stack exchange,提问作者jmajcan
相关产品推荐
相关产品推荐

