Noé Lopez <[email protected]> writes: > Reza Housseini <[email protected]> writes: > >> Hi Guixers >> >> I want to start again the discussion of converting propagated-inputs of >> Python packages to normal inputs. I remembered that there was a >> discussion once on the mailing list but I could not find it anymore. >> >> The general idea to make propagated inputs, normal inputs is the >> following: Every Python package hard codes it's inputs dependency paths >> in a file in the site-packages directory (could also be in METADATA or >> any other similar file). We add an additional finder to the import >> machinery, either to sys.meta_path or sys.path_hooks or we modify the >> existing PathFinder. The new or modified finder has one addition: if an >> import happens from a package residing inside the guix store, it first >> checks if the file or location of the hard coded dependecies are present >> and loads the module from there before processing with the standard >> import process. >> > > I would just change the last part: if an import happens from a package > residing inside the guix store, it first checks if the file or location > of the hard coded dependencies are present and adds them to the > sys.modules cache. > >> I think the actual difficult part is to single out imports coming from >> files inside the store and than finding the package root to lookup the >> hardcoded dependency paths and to make this process somewhat fast >> (although once the module is loaded, we can rely on the caching of >> sys.modules). The hooking into the import needs to be patched for each >> Python version we support (probably somewhere here [0]) but it may not >> be that immersive. >> >> What do you think? This needs probably a GCD if we ever want to go this >> path, but I am not sure if this suggestion is completely wrong or maybe >> undesired or was already suggested and discarded. >> >> Best, >> Reza >> >> [0] >> https://github.com/python/cpython/blob/main/Lib/importlib/_bootstrap_external.py > > Hi Reza, > > One of the downsides is that guix python libraries would only work with > the guix version of the python interpreter, right?
Is it not already the case? GUIX_PYTHONPATH is not visible by a non-guix python interpreter... > > If you make it a GCD, then maybe you can have it be a cross-interpreter > solution? Hmm worth while to think about it, although we have to fiddle with the import intrinsics of Python which may not easily carry over to other interpreters. > Possibly, you could make a library to help bring the functionality to > other interpreters (and maybe even upstream?). > > Have a nice day, > Noé
