aboutsummaryrefslogtreecommitdiffstats
path: root/examples/scriptableapplication
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-03-02 13:00:56 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-03-04 11:19:12 +0100
commit435bc2744cd108efc1511bf17117bd4f0de15b43 (patch)
treedd5a91931b8ad7924486b67c4872ec8dc724a3c3 /examples/scriptableapplication
parentcc19c439a64ddc42bc333ee5df7b651a789d6da5 (diff)
Fix running scriptableapplication in a virtualenv on Windows with Python 3.8
As of Python 3.8, Python is no longer is able to run stand-alone in a virtualenv due to missing libraries. Add the path to the modules instead. Task-number: PYSIDE-1236 Change-Id: I4ef1f02925d11900d35cc4e5fcc9f50a5e123c2f Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'examples/scriptableapplication')
-rw-r--r--examples/scriptableapplication/pythonutils.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/examples/scriptableapplication/pythonutils.cpp b/examples/scriptableapplication/pythonutils.cpp
index f546a5a6c..c5e18f256 100644
--- a/examples/scriptableapplication/pythonutils.cpp
+++ b/examples/scriptableapplication/pythonutils.cpp
@@ -53,6 +53,7 @@
#include <QtCore/QByteArray>
#include <QtCore/QCoreApplication>
#include <QtCore/QDebug>
+#include <QtCore/QOperatingSystemVersion>
#include <QtCore/QStringList>
#include <QtCore/QTemporaryFile>
#include <QtCore/QDir>
@@ -87,15 +88,30 @@ static void cleanup()
}
}
+static const char virtualEnvVar[] = "VIRTUAL_ENV";
+
+// If there is an active python virtual environment, use that environment's
+// packages location.
+static void initVirtualEnvironment()
+{
+ QByteArray virtualEnvPath = qgetenv(virtualEnvVar);
+ // As of Python 3.8, Python is no longer able to run stand-alone in a
+ // virtualenv due to missing libraries. Add the path to the modules instead.
+ if (QOperatingSystemVersion::currentType() == QOperatingSystemVersion::Windows
+ && (PY_MAJOR_VERSION > 3 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 8))) {
+ qputenv("PYTHONPATH", virtualEnvPath + "\\Lib\\site-packages");
+ } else {
+ qputenv("PYTHONHOME", virtualEnvPath);
+ }
+}
+
State init()
{
if (state > PythonUninitialized)
return state;
- // If there is an active python virtual environment, use that environment's packages location.
- QByteArray virtualEnvPath = qgetenv("VIRTUAL_ENV");
- if (!virtualEnvPath.isEmpty())
- qputenv("PYTHONHOME", virtualEnvPath);
+ if (qEnvironmentVariableIsSet(virtualEnvVar))
+ initVirtualEnvironment();
Py_Initialize();
qAddPostRoutine(cleanup);