首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命Python : Py_Initialize:当Python从Abaqus子程序调用时无法获得地区编码错误

致命Python : Py_Initialize:当Python从Abaqus子程序调用时无法获得地区编码错误
EN

Stack Overflow用户
提问于 2019-08-16 23:05:54
回答 1查看 3.1K关注 0票数 0

我试图将Python与用户子程序结合起来,在分析步骤之间更改模型的物质属性。更新脚本Update_Properties.py使用mpi4py并从UEXTERNALDB子例程调用,如下所示:

代码语言:javascript
复制
STAT=SYSTEM("mpiexec -n 4 python /scratch/Update_Properties.py")

但是,我一直收到这样的错误:

代码语言:javascript
复制
Fatal Python error: Py_Initialize: Unable to get the locale encoding
  File "/gpfs/gpfs1/apps2/abaqus/2019/SimulationServices/V6R2019x/linux_a64/tools/SMApy/python2.7/lib/python2.7/encodings/__init__.py", line 123
    raise CodecRegistryError,\
                            ^
SyntaxError: invalid syntax

这是在RHEL HPC上,使用Python3.6.1和Abaqus 2019。这项工作是通过SLURM提交的。使用Python3.6.1代替Abaqus,因为后者缺少mpi4py

我已经检查过了,以确保Python3.6.1在PATH上,并且是第一个出现的Python。我还检查了系统上没有设置的PYTHONPATHPYTHONHOME。我注意到,当Abaqus运行时,它为PYTHONPATH添加了一堆临时条目。

如果Update_Properties.py是作为作业直接提交的,那么脚本就能正常工作。

到目前为止,我已经尝试过:

  1. SYSTEM()调用中指定Python3.6.1的完整路径
  2. 在调用unset PYTHONPATH之前立即调用Update_Properties.py
  3. 在调用unset PYTHONHOME之前立即调用Update_Properties.py
  4. 在调用PYTHONPATH之前将Update_Properties.py设置为包含Python3.6.1安装的目录
  5. 使用bash脚本而不是直接调用Update_Properties.py

然而,每次我得到上述错误。

我研究了Stack Exchange和其他方面的其他问题,特别是:

External call to Python3.5 doesnot work from within Abaqus python

https://askubuntu.com/questions/640010/fatal-python-error-py-initialize-unable-to-get-the-locale-encoding-syntaxe

对于这些类型的问题,所给出的答案通常是围绕着清除或编辑PYTHONPATH和/或PYTHONHOME,而我已经尝试了这一点,但没有效果。

EN

回答 1

Stack Overflow用户

发布于 2019-08-20 18:35:32

最终,我绕过了这个问题,使用pyinstallerUpdate_Properties.py脚本转换为独立的可执行文件,然后调用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57532012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档