Импорт библиотек

#python #shared-libraries

#python #разделяемые библиотеки

Вопрос:

У меня есть общий вопрос с использованием сторонних библиотек, но я проиллюстрирую его на двух примерах, чтобы сделать его более понятным и «ответственным»:

Я хочу использовать pyfmi в Python. Попытка установить его через pip говорит мне:

«Исключение: Библиотека FMI не может быть найдена. Пожалуйста, укажите его местоположение, либо используя флаг в скрипте установки ‘—fmil-home’, либо укажите его с помощью переменной окружения FMIL_HOME.»

Я понял, что мне нужно загрузить tar.gz из jmodelica.org и извлеките файлы, создайте каталог сборки, используйте команды cmake, make и make install. Все выполняется без сбоев. Но попытка установки через pip выдает мне то же сообщение об ошибке. Итак, мой вопрос:

Как это сделать? Подразумевают ли они под скриптом установки setup.py файл? Как я могу получить к нему доступ, если я устанавливаю через pip? Какой из них является домашним каталогом fmi? Это неповрежденный файл в моей папке Downloads или один из файлов в ней:

   builddir
  Config.cmake
  install
  src
  Test
  ThirdParty
  CMakeLists.txt
  FMILIB_Acknowledgements.txt
  FMILIB_License.txt
  FMILIB_Readme.txt
  LICENSE.md
  README.md
  

? Что это за флаг и куда его «точно» поместить.

Большое спасибо.

Ответ №1:

PyFMI требует (как указано на сайте PyPI), чтобы библиотека FMI была установлена до попытки установить PyFMI из исходного кода.

Во время установки (вызов python setup.py установка) в PyFMI проверяется переменная среды «FMIL_HOME», чтобы увидеть, указывает ли это на установку библиотеки FMI, если да, то это будет использоваться во время установки. Итак, в вашем случае вам нужно установить эту переменную среды. Другой вариант заключается в установке вручную (с использованием python setup.py установите —fmil-home=»/path/to/fmil»), где добавленный путь должен указывать на библиотеку FMI.

Третий вариант — посмотреть, существуют ли бинарные установщики для вашей платформы (к ним относятся FMIL). Проверьте PyPI, Anaconda и сайт Кристофа Голке.