From c4f452ef6ae083ed21095313582f6d1bd775cbf3 Mon Sep 17 00:00:00 2001 From: Andreas Rammhold 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