From 83c7338ee3c3395aa8205df6962cb5aa093f2d33 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Wed, 31 Mar 2021 02:32:38 +0800 Subject: [PATCH] mgr/PyModule: put mgr_module_path before Py_GetPath() pip comes with _vendor/progress. so there is chance to import the vendored version of "progress" module instead of the "progress" mgr module, and fail to import the latter. in this change, the order of paths are rearranged so the configured `mgr_module_path` is put before the return value of `Py_GetPath()`. Fixes: https://tracker.ceph.com/issues/50058 Signed-off-by: Kefu Chai (cherry picked from commit 8638f526a9d04c3dfd758073980d709165070336) --- src/mgr/PyModule.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mgr/PyModule.cc b/src/mgr/PyModule.cc index 60c18eb3773a..afbff01ae6eb 100644 --- a/src/mgr/PyModule.cc +++ b/src/mgr/PyModule.cc @@ -320,9 +320,9 @@ int PyModule::load(PyThreadState *pMainThreadState) const wchar_t *argv[] = {L"ceph-mgr"}; PySys_SetArgv(1, (wchar_t**)argv); // Configure sys.path to include mgr_module_path - string paths = (":" + g_conf().get_val("mgr_module_path") + - ":" + get_site_packages()); - wstring sys_path(Py_GetPath() + wstring(begin(paths), end(paths))); + string paths = (g_conf().get_val("mgr_module_path") + ':' + + get_site_packages() + ':'); + wstring sys_path(wstring(begin(paths), end(paths)) + Py_GetPath()); PySys_SetPath(const_cast(sys_path.c_str())); dout(10) << "Computed sys.path '" << string(begin(sys_path), end(sys_path)) << "'" << dendl; -- 2.47.3