我在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)。我不知道究竟发生了什么变化导致这种情况。
答案 0 :(得分:1)
事实证明问题是我在C:\驱动器的文件夹中有一个名为casadi.py的Python脚本(以及casadi.pyc)。该脚本与JModelica的casadi模块完全无关。 sys.path
中路径的顺序使得如果当前目录不是C:\ JModelica.org-2.2,它会在找到我想要的实际模块之前找到无关的casadi.pyc。为了解决这个问题,我简单地重命名了不相关的脚本,尽管我认为手动更改sys.path
的内容也可以完成。