Python 3.10.4 встроен в приложение cpp. Я пытаюсь импортировать библиотеку sklearn, которая установлена в произвольном месте, с помощью pip --target.
Пользовательский путь sklearn (--target path) добавляется к sys.path.
Ниже приведена функция из сценария, которая просто печатает информацию о версии.
Выполнение с использованием командной строки работает хорошо, как показано ниже.
python3.10 -c 'from try_sklearn import *; createandload()'
Выход
[INFO ] [try_sklearn.py:23] 3.10.4 (main, Aug 4 2023, 01:24:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
[INFO ] [try_sklearn.py:24] sklearn /users/xxxx/temp/python/scikit-learn/sklearn/__init__.py Version = 1.5.1
Тот же сценарий при вызове с использованием CPP зависает на
import sklearn
Другие библиотеки, такие как pandas, numpy и т. д., работают без проблем.
Спасибо, что изучили это. Он висит по адресу github.com/scipy/scipy/blob/main/scipy/spatial/distance.py#L123
Хорошо, а вы уверены, что Scipy — правильная версия для вашего встроенного Python?
Я установил с помощью pip, используя тот же двоичный файл python3.10.
Я думаю, что проблема со встроенным Python заключается в том, что вы останавливаете и перезапускаете интерпретатор. Если вы запустите интерпретатор только один раз, все будет в порядке. Ваш вопрос не говорит ни о том, ни о другом
Я не уверен в этом, а код cpp — это полнофункциональное приложение, и я выполняю скрипт Python только тогда, когда это необходимо. Это может означать, что мне придется запускать интерпретатор несколько раз.
https://github.com/scipy/scipy/issues/21189
Похоже, Scipy и Numpy не поддерживают встроенный Python
Да, они поддерживают встроенный Python в C++. В ваш код C++ вам необходимо включить #include <Python.h>. Вы это сделали? Кроме того, попробуйте импортировать только те пакеты, которые вам нужны в вашем коде Python. Например, используйте «из sklearn импорта линейной_модели».
конечно, я включил python.h. И «импортировать sklearn», и импортировать линейную_модель из sklearn имеют одинаковое поведение.
Использовали ли вы отладчик, чтобы выяснить, что происходит, когда он зависает?