Am Mittwoch, 11. März 2020, 18:54:43 CET schrieb Grant Edwards:
> Background: a utility written in Python that I use regularly
> (weasyprint) was out-of-date and is being dropped from Gentoo's
> package database.  I tried (and faield) to creaate an ebuild for a
> more recent version.  So I ended up doing
> 
>  $ pip3 install --user weasyprint
> 
> That installed weasyprint and a few depdendancies (tinycss2,
> defusedxml, ciarocffi) under ~/.local/{bin,lib64}.
> 
> Question:
> 
> Can those dependancies installed under ~/.local cause problems for
> things that were installed using standard ebuilds which require
> older/other versions of those libraries (which were installed using
> standard ebuilds)?
> 
> For example, weasyprint requires cairosvg 2.4, and 2.4.2 was installed
> under .local via the pip3 command shown above.
> 
> My stable cairosvg is 2.0.3 and it is installed in the usual "system"
> location /usr/lib64/python3.6/site-packages by the normal "emerge"
> process.  [IIRC, at one point I tried unmasking 2.4.2, but that caused
> a cascade of other problems.]
> 
> Q: Under what conditions will having a second installation of a Python
>    library under .local cause problems?

IIUC you shouldn't have any problems, simply because ~/.local/ is not part of 
the system python's module search path:

% python3
Python 3.6.10 (default, Feb 26 2020, 01:09:02) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys                 
>>> sys.path
['', '/usr/lib64/python36.zip', '/usr/lib64/python3.6', '/usr/lib64/python3.6/
lib-dynload', '/usr/lib64/python3.6/site-packages']

So whatever uses the system Python will not see your local packages unless it 
manipulates sys.path appropriately (which I don't think any sane software ever 
does).

A virtualenv, as suggested by Mark, would have its own module search paths.  I 
don't know if those ever *can* include the system paths (because they normally 
use their own Python binary with its own standard library and site-packages), 
but none of the environments I have do, e.g.:

% conda activate base
% python                                                                        
                                                                                
                                                                                
                 
(base) 
Python 3.7.4 (default, Aug 13 2019, 20:35:49) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/marcec/.miniconda3/lib/python37.zip', '/home/marcec/.miniconda3/
lib/python3.7', '/home/marcec/.miniconda3/lib/python3.7/lib-dynload', '/home/
marcec/.miniconda3/lib/python3.7/site-packages']
>>>

(Granted it's conda and not plain virtualenv, but I think the principles are 
the same.)

HTH
-- 
Marc Joliet
--
"People who think they know everything really annoy those of us who know we
don't" - Bjarne Stroustrup

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to