Dymola 2022启动目录行为分析及Python接口端启动阶段控制方法问询
Dymola 2022 Python接口启动工作目录行为说明
行为成因
该行为是Dymola原生设计和操作系统子进程规则共同作用的结果:
- 当
Tools > Options > Settings > Save startup directory设置为Do not save时,Dymola作为Python启动的子进程,默认会继承父进程(即Python解释器)的工作目录。Python解释器的工作目录为脚本执行时的终端/IDE工作路径(如你示例中VSCode打开的.\project目录),和脚本文件本身的存放路径无关,这是Windows、Linux等主流操作系统的通用子进程规则。 - 当设置为
Save this directory > 固定路径时,Dymola启动时会优先读取该配置项的路径,直接覆盖继承的父进程工作目录,因此工作目录会稳定保持为你设置的路径。
启动阶段配置工作目录的方法
无需等待实例化完成后调整,以下两种方法均可在Dymola启动阶段直接完成工作目录配置:
方法1:提前修改Python进程的工作目录
在Do not save模式下,Dymola会继承Python的工作目录,你只需要在实例化Dymola之前修改Python自身的工作目录即可,示例代码:
import os from dymola.dymola_interface import DymolaInterface # 先切换Python的工作目录到目标路径 target_work_dir = r"C:\Users\你的用户名\Documents\Dymola" os.chdir(target_work_dir) # 再实例化Dymola,启动后工作目录直接为target_work_dir dymola = DymolaInterface()
方法2:实例化时直接传入工作目录参数
Dymola Python接口的DymolaInterface构造函数原生支持working_directory参数,该参数优先级高于Dymola自带的启动目录配置和Python当前工作目录,直接指定即可在启动阶段完成配置,示例代码:
from dymola.dymola_interface import DymolaInterface target_work_dir = r"C:\Users\你的用户名\Documents\Dymola" # 实例化时直接指定启动工作目录 dymola = DymolaInterface(working_directory=target_work_dir)
内容的提问来源于stack exchange,提问作者user12812532
相关产品推荐
相关产品推荐

