Невозможно импортировать модуль pyjmi при смене каталога - PullRequest
0 голосов
/ 18 мая 2018

Я использую JModelica 2.1 в Windows, и до недавнего времени мне всегда удавалось импортировать 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, кажется, работают нормально.

Я попытался обойти проблему, установив JModelica2.2, однако проблема все еще сохраняется (как с 2.1, так и с 2.2).Однако следует отметить, что я не удалял JModelica 2.1 при этом.

Если у кого-то есть какие-либо идеи о причинах такого поведения, я был бы очень признателен.

Редактировать: Ситуация обернулась наихудшим, и теперь я не могу импортировать pyjmi ни при каких обстоятельствах при использовании JModelica 2.1 (тогда как предыдущее поведение все еще сохраняется с JModelica 2.2).Я не знаю, что именно изменилось, чтобы вызвать это.

1 Ответ

0 голосов
/ 23 мая 2018

Оказалось, что проблема заключалась в том, что у меня был скрипт Python с именем casadi.py (и вместе с ним casadi.pyc) в папке на диске C: \.Этот сценарий был совершенно не связан с модулем casadi JModelica.Порядок путей в sys.path сделал его таким, что, если бы текущим каталогом не был C: \ JModelica.org-2.2, он нашел бы несвязанный файл casadi.pyc, прежде чем найти нужный модуль.Чтобы решить проблему, я просто переименовал несвязанный скрипт, хотя я представляю, что ручное изменение содержимого sys.path также помогло бы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...