致命的Python错误:initfsencoding:无法获取语言环境编码文件“/cm/shared/apps/anaconda2/4.5.12/lib/python2.7/encodings/__init__.py”

问题描述 投票:0回答:2

我正在为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
python slurm
2个回答
0
投票

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

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

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

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

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


0
投票

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

....    
module load anaconda2/4.5.12
source activate py37
unset PYTHONPATH
python3  taxo.TXT
© www.soinside.com 2019 - 2024. All rights reserved.