Fatal Python error: initfsencoding: Unable to get the locale encoding File "/cm/shared/apps/anaconda2/4.5.12/lib/python2.7/encodings/__init__.py"

Fatal Python error: initfsencoding: Unable to get the locale encoding File "/cm/shared/apps/anaconda2/4.5.12/lib/python2.7/encodings/__init__.py"

我正在为 SLURM 工作负载管理器编写作业提交脚本。首先,我加载了 anaconda2/4.5.12(包括 python 2.7)模块。然后,我创建了 Python3.7 版本的 conda 环境。我尝试使用 "sbatsh" 命令提交脚本,但出现此错误:

Fatal Python error: initfsencoding: Unable to get the locale encoding
File "/cm/shared/apps/anaconda2/4.5.12/lib/python2.7/encodings/__init__.py", line 123
raise CodecRegistryError,\
                        ^
SyntaxError: invalid syntax
Current thread 0x00002aaaaaaffc00 (most recent call first):
/cm/local/apps/slurm/var/spool/job04287/slurm_script: line 19: 40032 
Aborted                 python3 taxo.TXT

这是我的脚本文件:

#!/bin/bash
#
#SBATCH --job-name=taxjob
#SBATCH --nodes=4

#SBATCH --tasks-per-node=3
#SBATCH --time=0-03:00:00
#SBATCH --partition=shortq 
#SBATCH --mem=24GB 
#SBATCH --output=/home/s.e/tax/Ftest-%j.out
#SBATCH --error=/home/s.e/tax/Ftest-%j.err
module load anaconda2/4.5.12
source activate py37
python3  taxo.TXT

问题是 "/cm/shared/apps/anaconda2/4.5.12/lib/python2.7/encodings/__init__.py" 如果是 python2 文件,就像您在路径中看到的那样,但它试图被解释为 python3 文件。您可以使用 python2.7 修复此 conda 问题并 运行 或编辑 encodings/__init__.py 文件以使其 python3-interpretable

要了解问题,您可以尝试手动 运行 python2 和 python3 中的这一行:

#Python3
>>> raise Exception,\
  File "<stdin>", line 1
    raise Exception,\
                   ^
SyntaxError: invalid syntax

但是

#Python2.7
>>> raise Exception,\
...

Python3 raise Exception,\ "str" 的模拟是 raise Exception("str")。所以你可以更改文件的第123行,但这不是一个好主意,因为可能会出现其他问题,所以最好在anacondaconfigs/executing命令中修复一些东西

经过多次尝试,解决方案是将指令 "unset PYTHONPATH" 添加到我的脚本文件中,如下所示:

....    
module load anaconda2/4.5.12
source activate py37
unset PYTHONPATH
python3  taxo.TXT