Hartmut Goebel <h.goe...@crazy-compilers.com> writes: > Am 17.03.2018 um 12:18 schrieb 宋文武: > > I plan to implement option 1 by adding a "sitecustomize.py" (better > than modify "site.py") into the python packages, and modify > "search-path-specification" to use "GUIX_PYTHON_X_Y_SITE_PACKAGES". > > Sorry, do say, but does not work in a virtual environment, since > GUIX_PYTHON_X_Y_SITE_PACKAGES will be added unconditionally. Also I assume > this will execute site.main > () twice.
Okay, and maybe it actually works? :-) It turns out that 'sitecustomize.py' will be imported (executed) at most once, and won't be added unconditionally: - with "include-system-site-packages = false", a python3 created venv will have a "sys.path" like: ['', '/gnu/store/pppycfhs5gc7dsx7g099l9p6ncw3m6d9-python-3.6.4/lib/python36.zip', '/gnu/store/pppycfhs5gc7dsx7g099l9p6ncw3m6d9-python-3.6.4/lib/python3.6', '/gnu/store/pppycfhs5gc7dsx7g099l9p6ncw3m6d9-python-3.6.4/lib/python3.6/lib-dynload', '/tmp/venv36/lib/python3.6/site-packages'] Since "sitecustomize.py" is in "/gnu/store/pppycfhs5gc7dsx7g099l9p6ncw3m6d9-python-3.6.4/lib/python3.6/site-packages", it's not executed at all. - with "include-system-site-packages = true", the python3 created venv will have a "sys.path" like: ['', '/gnu/store/pppycfhs5gc7dsx7g099l9p6ncw3m6d9-python-3.6.4/lib/python36.zip', '/gnu/store/pppycfhs5gc7dsx7g099l9p6ncw3m6d9-python-3.6.4/lib/python3.6', '/gnu/store/pppycfhs5gc7dsx7g099l9p6ncw3m6d9-python-3.6.4/lib/python3.6/lib-dynload', '/tmp/lib/python3.6/site-packages', '/gnu/store/pppycfhs5gc7dsx7g099l9p6ncw3m6d9-python-3.6.4/lib/python3.6/site-packages', ...... (entries added by GUIX_PYTHON_3_6_SITE_PACKAGES)] I think this is the wanted result. I haven't try "virtualenv" and python2 (need time to build...), but I guess the results should be the same?