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

Unable to import pyjmi module when changing directory

我在 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

奇怪的是,上面的错误只发生在我改变当前目录的时候。相反,如果我不 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 的 Python 脚本(以及 casadi.pyc 和它一起)。此脚本与 JModelica 的 casadi 模块完全无关。 sys.path 中的路径顺序使得如果当前目录不是 C:\JModelica.org-2.2,它会在找到实际模块之前找到不相关的 casadi.pyc我想了。为了解决这个问题,我只是重命名了不相关的脚本,尽管我想手动更改 sys.path 的内容也可以解决问题。