Я пытаюсь встроить Python в C++.exe, используя NumPy, Pandas, SciPy и некоторые скомпилированные файлы Cython PYD. Есть несколько инструкций по встраиванию Python, но они на самом деле не распространяются на дополнительные библиотеки: чтобы убедиться, что это работает на компьютерах с Windows, на которых отсутствует моя версия Python, я использую встроенную библиотеку для 3.5.1 здесь, в которой мало документации по ее использованию: https://docs.python.org/3.5/using/windows.html#embedded-distribution
И перед вызовом Py_Initialize()
я извлекаю файл python35.zip
из встроенного дистрибутива и помещаю его в каталог проекта, а затем ссылаюсь на него, как описано здесь: http://www.myoddweb.com/2016/02/27/встроить-python-в-ваше-c-приложение-без-python-установленного-на-гостевой-машине/ т.е.
#include <Python.h>
std::wstring python_path;
python_path += L"\\pythonlibs\\python35.zip";
Py_SetPath(python_path.c_str());
Py_Initialize();
По какой-то причине я не могу запустить скомпилированную версию. Я пытался отделить Python от сборки моей системы. Я все еще ссылаюсь на включения Numpy из моего системного пути, хотя C:\Anaconda3\Lib\site-packages\numpy\core\include
, не уверен, что это проблематично. Весь мой код работает быстро, потому что я использую NumPy MemoryViews
и оптимизированную обработку данных Pandas, которую мне нужно сохранить. Здесь я не эксперт по MSVC, поэтому просто ищу любого, кто может направить меня в правильном направлении по внедрению Python. Очень признателен.
python_path += L"\\python35.zip";
будет ссылаться на что-то вродеC:\python35.zip
, что, вероятно, не то, что предполагалось. - person J.J. Hakala   schedule 27.06.2016import_wrapper_inner()
, который не проверяет возвращаемое значение. Я попытался объяснить, к чему это может привести, в ответе. Вы можете попробовать установить переменную среды PYTHONPATH, чтобы она указывала на каталог, в котором находится ваш модуль расширения и другие вещи. - person J.J. Hakala   schedule 27.06.2016