guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch version-1.4.0 updated: sitecustomize.py: Honor .pth files.


From: guix-commits
Subject: branch version-1.4.0 updated: sitecustomize.py: Honor .pth files.
Date: Fri, 17 Dec 2021 09:59:37 -0500

This is an automated email from the git hooks/post-receive script.

apteryx pushed a commit to branch version-1.4.0
in repository guix.

The following commit(s) were added to refs/heads/version-1.4.0 by this push:
     new fa17abf  sitecustomize.py: Honor .pth files.
fa17abf is described below

commit fa17abf1af09570708daa28dd40ffbc932ebe25c
Author: Maxim Cournoyer <maxim.cournoyer@gmail.com>
AuthorDate: Fri Dec 3 22:36:26 2021 -0500

    sitecustomize.py: Honor .pth files.
    
    Fixes <https://issues.guix.gnu.org/52269>.
    
    * gnu/packages/aux-files/python/sitecustomize.py: Use site.addsitedirs to 
add
    the site directories; this takes care of the .pth files.  Make sure the 
added
    items still appear before Python's own 'site-packages' directory.
---
 gnu/packages/aux-files/python/sitecustomize.py | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/aux-files/python/sitecustomize.py 
b/gnu/packages/aux-files/python/sitecustomize.py
index 71e328b..e2348e0 100644
--- a/gnu/packages/aux-files/python/sitecustomize.py
+++ b/gnu/packages/aux-files/python/sitecustomize.py
@@ -18,6 +18,7 @@
 # along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 import os
+import site
 import sys
 
 # Commentary:
@@ -47,9 +48,18 @@ all_sites_norm = [os.path.normpath(p) for p in all_sites_raw]
 matching_sites = [p for p in all_sites_norm
                   if p.endswith(site_packages_prefix)]
 
-# Insert sites matching the current version into sys.path, right before
-# Python's own site.  This way, the user can override the libraries provided
-# by Python itself.
-sys_path_absolute = [os.path.realpath(p) for p in sys.path]
-index = sys_path_absolute.index(python_site)
-sys.path[index:index] = matching_sites
+if matching_sites:
+    # Deduplicate the entries, append them to sys.path, and handle any
+    # .pth files they contain.
+    for s in matching_sites:
+        site.addsitedir(s)
+
+    # Move the entries that were appended to sys.path in front of
+    # Python's own site-packages directory.  This enables Guix
+    # packages to override Python's bundled packages, such as 'pip'.
+    python_site_index = sys.path.index(python_site)
+    new_site_start_index = sys.path.index(matching_sites[0])
+    if python_site_index < new_site_start_index:
+        sys.path = (sys.path[:python_site_index]
+                    + sys.path[new_site_start_index:]
+                    + sys.path[python_site_index:new_site_start_index])



reply via email to

[Prev in Thread] Current Thread [Next in Thread]