【发布时间】:2018-05-18 14:47:26
【问题描述】:
我在 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)。我不知道究竟是什么变化导致了这种情况。
【问题讨论】:
-
也许尝试重新安装casadi?
-
您的安装文件夹中有 casadi_core.py 吗? (即在 /JModelica.org/install/Python/casadi/ 中)
-
@ChristianWinther 是的,事实上 pyjmi 在 JModelica 2.2 中工作得非常好(例如我可以毫无问题地运行 VDP 示例),但前提是我事先没有使用 cd 命令。在 JModelica 2.1 中,它在任何情况下都不起作用。所有这些都是我以前从未有过的近期行为。
-
@matth 我没有使用 casadi 的单独安装,而是使用 JModelica 安装的那个,所以我不能用 pip 重新安装它,除非我重新安装我的整个 JModelica 安装。但是,我会尝试重新安装,因为全新的 JModelica 安装并没有起到作用,不幸的是我怀疑它会做任何事情。另外,为了获得信息,我尝试使用 JModelica SDK 从源代码重新编译,但这并没有解决问题。
-
您可以使用
python -m pip install -U casadi来确保使用正确的点子。只要确保您使用的是相同的 python 可执行文件。 docs.python.org/3/installing/…