28#ifndef __PYTHON_MANAGER__
29#define __PYTHON_MANAGER__
36#pragma push_macro("slots")
38#include <pybind11/embed.h>
39#pragma pop_macro("slots")
41namespace py = pybind11;
115 static bool initPython();
122 static QString getPythonStatus();
134 static py::module_ lockContext(QString virtualEnvPath, QString scriptPath);
147 static QMap<QString, QVariant> runScript(QString virtualEnvPath,
const QString& pythonScript, QString& pythonError);
150 static void unlock();
153 static QString getPythonVersion();
157 static QString pythonEnvironmentDebugInfo();
160 static void dump(py::dict dict);
175 static QVariant fromPython(
const py::handle& value);
183 static bool checkVirtualEnvPath(QString virtualEnvRootPath,
bool silent =
true);
188 static bool createVirtualEnv(QString virtualEnvRootPath);
194 static bool installPackages(QString virtualEnvPath, QStringList packages,
int progressMinimum = 0,
int progressMaximum = 100);
207 static void setPythonPointer(QObject* qObject, py::object pythonPointer);
211 static void backupPythonState(QObject* qObject);
215 static void restorePythonState(QObject* qObject);
219 static void resolvePythonSharedLibPathAndVersion();
222 static bool loadPythonSharedLibrary();
228 static QString findPythonModule(
const QString& moduleName);
233 static bool insertIfNotAlreadyInList(py::list* list,
const QString& value);
238 static void checkPythonPackageConflicts();
242 static QString findPythonExecutable();
253 static py::module_ importOrReload(
const QString& moduleName,
bool clearAll =
false);
258 static bool setupPython(QString virtualEnvPath, QString scriptPath = QString());
261 static QString pythonStatusString;
264 static QDir pythonCamitkModulePath;
267 static QString pythonSoLib;
270 static QString pythonVersion;
273 static QString systemPythonExecutable;
276 static bool isLocked;
279 static QMap<QObject*, QPair<py::object, py::dict>> pythonStateMap;
282 static QString currentVirtualEnvPath;
283 static QString currentScriptPath;
284 static py::module_ currentModule;
#define CAMITK_API
Definition CamiTKAPI.h:66