在 Abaqus python 中对 Python3.5 的外部调用不起作用
Posted
技术标签:
【中文标题】在 Abaqus python 中对 Python3.5 的外部调用不起作用【英文标题】:External call to Python3.5 doesnot work from within Abaqus python 【发布时间】:2017-06-14 18:38:33 【问题描述】:Abaqus 是一种基于物理的机械仿真工具。它与 python 2.7.3 捆绑在一起。我使用 python 脚本来自动化某些操作。最近,我不得不使用os.system()通过Abaqus CAE python交互界面运行一个Python3.5脚本。 subprocess.call 或 subprocess.popen 也不起作用。 abaqus python一直报如下错误:
致命的 Python 错误:Py_Initialize: 无法加载文件系统编解码器 文件“C:\SIMULIA\CAE\2016\win_b64\tools\SMApy\python2.7\lib\encodings__init__.py”,第 123 行引发 CodecRegistryError,\
遇到类似错误的人可以通过更正路径信息来调试他们的代码。无论我尝试什么,abaqus python 坚持使用它自己的 init.py 文件初始化 python3,这会给出语法错误。以下是我尝试过的一些事情:
我定义了 PYTHONHOME 和 PYTHONPATH 变量指向 v3.5 文件夹 我将 v3.5 文件夹附加到 sys.path。 我从 sys.path 中删除了冲突 init.py 文件的文件夹,并将 v3.5 文件夹附加到 sys.path 我重置了 sys.path 并将 v3.5 文件夹附加到 sys.path。 我手动修改了 sys.prefix 以指向 v3.5 文件夹 我创建了一个调用 v3.5 的 DOS 批处理文件。我从 Abaqus 调用了这个批处理文件。同样的错误。有什么想法吗?我可以从 abaqus 之外的 python 2 脚本中成功地对 python 3 进行外部调用。
【问题讨论】:
也许是预编译? docs.python.org/3/library/py_compile.html 搜索“python system codec”会产生很多相关问题,例如***.com/questions/5694706/… 我遇到了同样的问题,预编译似乎并没有为我解决问题。 【参考方案1】:从 abaqus 附带的捆绑版 python 运行 python 3 时,我遇到了同样的问题。
对我有用的解决方案是在调用我的 python 3 脚本之前清除环境变量 PYTHONHOME。
os.environ["PYTHONPATH"] = ""
我不确定这是否是这个问题的最佳答案,以及它是否适用于所有情况,但我希望这个答案对这个职位的其他人有所帮助。
【讨论】:
以上是关于在 Abaqus python 中对 Python3.5 的外部调用不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Python从Abaqus输出数据库读取历史输出数据(Abaqus帮助文档学习笔记)
从命令行停止 Abaqus 中正在运行的 Python 脚本