Modelica 更改目录时无法导入pyjmi模块

Modelica 更改目录时无法导入pyjmi模块,modelica,jmodelica,Modelica,Jmodelica,我在Windows上使用JModelica 2.1,直到最近,我一直能够导入pyjmi而没有任何问题。例如,在IPython控制台中,我通常会毫无问题地运行以下内容: cd C:\mydirectory from pyjmi import * 然而,最近,我意外地打开了一个新的IPython控制台,并运行了以前的代码段,但没有意识到我已经打开了一个正在运行优化问题的代码段。此后,前面的代码将抛出以下错误: --------------------------------------------

我在Windows上使用JModelica 2.1,直到最近,我一直能够导入pyjmi而没有任何问题。例如,在IPython控制台中,我通常会毫无问题地运行以下内容:

cd C:\mydirectory
from pyjmi import *
然而,最近,我意外地打开了一个新的IPython控制台,并运行了以前的代码段,但没有意识到我已经打开了一个正在运行优化问题的代码段。此后,前面的代码将抛出以下错误:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-2-ecb3494d14c4> in <module>()
----> 1 from pyjmi import *

C:\JModelica.org-2.1\install\Python\pyjmi\symbolic_elimination.py in <module>()
     21 import scipy
     22 import casadi
---> 23 import modelicacasadi_wrapper as ci
     24 import itertools
     25 from collections import OrderedDict

C:\JModelica.org-2.1\install\Python\modelicacasadi_wrapper\__init__.py in <module>()
----> 1 from modelicacasadi_wrapper import *

C:\JModelica.org-2.1\install\Python\modelicacasadi_wrapper\modelicacasadi_wrapper.py in <module>()
    155 SwigPyIterator_swigregister(SwigPyIterator)
    156
--> 157 import casadi.casadi_core
    158 class Printable(_object):
    159     """Proxy of C++ ModelicaCasADi::Printable class."""

ImportError: No module named casadi_core
---------------------------------------------------------------------------
ImportError回溯(最近一次呼叫最后一次)
在()
---->1来自pyjmi导入*
C:\JModelica.org-2.1\install\Python\pyjmi\symbolic\u elimination.py in()
21进口scipy
22进口卡萨迪
--->23将modelicacasadi_包装器作为ci导入
24进口itertools
25来自集合进口订单信息和通信技术
C:\JModelica.org-2.1\install\Python\modelicacasadi\u wrapper\\uuu init\uuuu.py in()
---->1来自modelicacasadi_包装导入*
C:\JModelica.org-2.1\install\Python\modelicacasadi_wrapper\modelicacasadi_wrapper.py in()
155 SwigPyIterator\u swigregister(SwigPyIterator)
156
-->157导入casadi.casadi_核心
158类可打印(_对象):
159“”C++的MyjiCasaDe:代理:可打印类。
ImportError:没有名为casadi_core的模块
奇怪的是,上面的错误只有在我更改当前目录时才会发生。相反,如果我没有
cd
并停留在默认目录(C:\Users\Public\Documents\JModelica.org)中,那么它导入时不会出现任何问题,之后工作正常。这只发生在pyjmi上(例如,pyfmi将导入而不出现问题),这似乎表明这可能是一个与环境变量相关的问题。但是,我找不到任何问题,在所有情况下,
JMODELICA_HOME
以及使用
pyjmi.environ
找到的所有其他环境变量似乎都工作正常

我试图通过安装JModelica 2.2来规避这个问题,但是问题仍然存在(2.1和2.2都有)。但是,应该注意的是,在执行此操作时,我没有卸载JModelica 2.1

如果有人知道造成这种行为的原因,我将不胜感激

编辑:
事情发生了最坏的变化,现在在使用JModelica 2.1时,我无法在任何情况下导入pyjmi(而之前的行为仍然适用于JModelica 2.2)。我不知道到底是什么原因导致了这种情况。

结果表明,问题在于我的C:\驱动器的文件夹中有一个名为casadi.py(以及casadi.pyc)的Python脚本。这个脚本与JModelica的casadi模块完全无关。
sys.path
中路径的顺序使得,如果当前目录不是C:\JModelica.org-2.2,它将在找到我想要的实际模块之前找到不相关的casadi.pyc。为了解决这个问题,我简单地重命名了不相关的脚本,尽管我认为手动更改
sys.path
的内容也可以做到这一点

也许尝试重新安装?您的安装文件夹中是否有casadi_core.py?(即在/JModelica.org/install/Python/casadi/)@ChristianWinther是的,事实上pyjmi在JModelica 2.2中工作得非常好(例如,我可以毫无问题地运行VDP示例),但前提是我事先没有使用cd命令。在JModelica2.1中,它在任何情况下都不起作用。所有这些都是我以前从未有过的最近的行为。@matth我没有使用单独的casadi安装,而是使用与JModelica一起安装的,因此我无法使用pip重新安装它,例如,除非重新安装整个JModelica安装。不过,我将尝试重新安装,因为JModelica的全新安装并没有起到作用,不幸的是,我怀疑它会起到任何作用。另外,作为参考,我尝试使用JModelica SDK从源代码重新编译,但这并没有解决问题。只需确保您使用的是相同的python可执行文件。