61 lines
2.3 KiB
Diff
61 lines
2.3 KiB
Diff
From c4f452ef6ae083ed21095313582f6d1bd775cbf3 Mon Sep 17 00:00:00 2001
|
|
From: Andreas Rammhold <andreas@rammhold.de>
|
|
Date: Thu, 2 Nov 2023 17:32:07 +0100
|
|
Subject: [PATCH] NIXOS: don't ignore PYTHONPATH
|
|
|
|
On NixOS or rather within nixpkgs we provide the runtime Python
|
|
packages via the PYTHONPATH environment variable. FreeCAD tries its
|
|
best to ignore Python environment variables that are being inherited
|
|
from the environment. For Python versions >=3.11 it also tries to
|
|
initialize the interpreter config without any environmental data. We
|
|
have to initialize the configuration *with* the information from the
|
|
environment for our packaging to work.
|
|
|
|
Upstream has purposely isolated the environments AFAIK and thus
|
|
shouldn't accept this patch (as is). What they might accept (once
|
|
support for older Python versions has been dropped) is removing the
|
|
PYTHONPATH specific putenv calls.
|
|
---
|
|
src/Base/Interpreter.cpp | 2 +-
|
|
src/Main/MainGui.cpp | 3 ---
|
|
2 files changed, 1 insertion(+), 4 deletions(-)
|
|
|
|
diff --git a/src/Base/Interpreter.cpp b/src/Base/Interpreter.cpp
|
|
index 52c47168af..9966bd0013 100644
|
|
--- a/src/Base/Interpreter.cpp
|
|
+++ b/src/Base/Interpreter.cpp
|
|
@@ -554,7 +554,9 @@ void initInterpreter(int argc,char *argv[])
|
|
{
|
|
PyStatus status;
|
|
PyConfig config;
|
|
PyConfig_InitIsolatedConfig(&config);
|
|
+ config.isolated = 0;
|
|
+ config.use_environment = 1;
|
|
|
|
status = PyConfig_SetBytesArgv(&config, argc, argv);
|
|
if (PyStatus_Exception(status)) {
|
|
diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp
|
|
index 48ae847ef4..28813df383 100644
|
|
--- a/src/Main/MainGui.cpp
|
|
+++ b/src/Main/MainGui.cpp
|
|
@@ -112,17 +112,14 @@ int main( int argc, char ** argv )
|
|
// See https://forum.freecad.org/viewtopic.php?f=18&t=20600
|
|
// See Gui::Application::runApplication()
|
|
putenv("LC_NUMERIC=C");
|
|
- putenv("PYTHONPATH=");
|
|
#elif defined(FC_OS_MACOSX)
|
|
(void)QLocale::system();
|
|
- putenv("PYTHONPATH=");
|
|
#elif defined(__MINGW32__)
|
|
const char* mingw_prefix = getenv("MINGW_PREFIX");
|
|
const char* py_home = getenv("PYTHONHOME");
|
|
if (!py_home && mingw_prefix)
|
|
_putenv_s("PYTHONHOME", mingw_prefix);
|
|
#else
|
|
- _putenv("PYTHONPATH=");
|
|
// https://forum.freecad.org/viewtopic.php?f=4&t=18288
|
|
// https://forum.freecad.org/viewtopic.php?f=3&t=20515
|
|
const char* fc_py_home = getenv("FC_PYTHONHOME");
|
|
--
|
|
2.42.0
|
|
|