summaryrefslogtreecommitdiffstats
path: root/Modules/getpath.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/getpath.c')
-rw-r--r--Modules/getpath.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/Modules/getpath.c b/Modules/getpath.c
index c057737..f26b8e9 100644
--- a/Modules/getpath.c
+++ b/Modules/getpath.c
@@ -734,6 +734,11 @@ calculate_path(void)
bufsz += wcslen(zip_path) + 1;
bufsz += wcslen(exec_prefix) + 1;
+ /* When running from the build directory, add room for the Modules
+ * subdirectory too.
+ */
+ if (efound == -1)
+ bufsz += wcslen(argv0_path) + wcslen(L"Modules") + 2;
buf = (wchar_t *)PyMem_Malloc(bufsz * sizeof(wchar_t));
if (buf == NULL) {
@@ -781,6 +786,15 @@ calculate_path(void)
/* Finally, on goes the directory for dynamic-load modules */
wcscat(buf, exec_prefix);
+ /* And, if we run from a build directory, the Modules directory (for
+ * modules built with Modules/Setup.)
+ */
+ if (efound == -1) {
+ wcscat(buf, delimiter);
+ wcscat(buf, argv0_path);
+ wcscat(buf, separator);
+ wcscat(buf, L"Modules");
+ }
/* And publish the results */
module_search_path = buf;