Как совместить Python 3 со стандартной JModelica, зависящей от Python 2?

Я хотел бы установить Python 3 с PyFMI на свой компьютер с Windows, где у меня уже есть JModelica 2.10 с Python 2. Моя идея состоит в том, чтобы при необходимости скомпилировать модели Modelica в FMU в Python 2, а затем разработать сценарии на Python 3 для запуска FMU и визуализировать результаты. Как мне лучше всего это сделать, чтобы избежать конфликта между двумя средами Python?

1 ответ

Решение

JModelica 2.10 и Python 2 уже установлены с использованием стандартного двоичного установочного файла для JModelica в Windows. Похоже, это дает ограниченную среду Python. Здесь conda не используется, но pip включен.

Я выполнил тестовую установку с Python 3 и PyFMI с использованием Miniconda, который, кажется, действительно работает, и я хотел бы получить комментарии о том, есть ли здесь потенциальные проблемы, которые нужно проверить, или их можно лучше решить. Я не предпринимал никаких шагов для удаления библиотек из Python 2, связанных с PyFMI, из установки JModelica. Я думаю, это может подождать.

В Windows 10 я сделал следующее:

  1. Стандартный Windows-установщик для JModelica 2.10 сделан некоторое время назад.
  2. Установите среду Python 3 "сверху" с помощью conda следующим образом:

    а. Загрузите Miniconda для Python3 отсюда https://docs.conda.io/en/latest/miniconda.html

    б. Установите Miniconda3, и вы получите Python 3.x и некоторые пакеты, но будьте осторожны на ранней стадии установки и сделайте выбор НЕ устанавливать установку по какому-либо "пути". Есть два поля, и я предпочитаю оставить оба поля неотмеченными.

    c. Может быть хорошо сначала обновить conda с помощью команды:

    $conda update conda
    

    d. Затем я создаю специальную среду pyfmi с Python 3 для дальнейшей установки PyFMI командой

    $conda create -n pyfmi python=3
    

    е. Затем активируйте эту среду командой

    $conda activate pyfmi
    
  3. Теперь установите PyFMI в только что созданную активную среду conda "pyfmi" и некоторые другие полезные библиотеки:

    $conda config --add channels conda-forge
    $conda install pyfmi
    $conda install matplotlib
    $conda install ipython
    $conda install jupyter
    
  4. Теперь вы можете деактивировать среду pyfmi и закрыть командное окно.

  5. В меню "Пуск" Windows теперь вы найдете "кнопку" для Anaconda PowerShell (и есть еще одна кнопка для Anaconda). Используйте первый, чтобы запустить командное окно, и отсюда вы делаете

    $conda activate pyfmi
    $ipython --pylab
    
  6. Теперь вы можете загрузить предыдущий скомпилированный FMU и запустить его как обычно, но теперь в среде Python 3 и команды:

    $from pyfmi import load_fmu
    $model=load_fmu(FMU_model)
    
  7. Если вы хотите изменить модель и перекомпилировать, чтобы получить новый FMU, вы просто открываете новое командное окно для JModelica/pylab из меню "Пуск" Windows, как обычно. Это означает, что вы в одном командном окне работаете с Python 2 с полной JModelica 2.10, а в другом командном окне с Python 3 только с PyFMI. И вы можете работать с одной и той же папкой из обоих, если хотите, но также может быть лучше иметь отдельные папки.

Как сказано выше, эта установка предоставляет возможность запускать один и тот же FMU как в Python2 с командным окном JModelica, так и в Python3 с командным окном pyfmi.

Я протестировал его с помощью нескольких скриптов и использовал model.simulate(), а также model.estimate() и пока не обнаружил никаких проблем.

Связанное сообщение - PyFMI в среде Python 3 в Ubuntu 18.04.

Другие вопросы по тегам