Date: Tue, 22 Mar 2016 15:14:26 +0100 From: Miroslav Lachman <000.fbsd@quip.cz> To: Shane Ambler <FreeBSD@ShaneWare.Biz>, ports@FreeBSD.org Subject: Re: Multiple versions of Python packages (2.7 vs 3.4) Message-ID: <56F15342.7050005@quip.cz> In-Reply-To: <56E9F56F.2080706@ShaneWare.Biz> References: <56E95B02.8030502@quip.cz> <56E9F56F.2080706@ShaneWare.Biz>
next in thread | previous in thread | raw e-mail | index | archive | help
Shane Ambler wrote on 03/17/2016 01:08: > On 16/03/2016 23:39, Miroslav Lachman wrote: >> I checked that most files are installed in versioned subdirectory, for >> example python2.7/site-packages, some tools have versioned binaries like >> /usr/local/bin/pip-2.7 but they have also symlink /usr/local/bin/pip. >> Are there any way to create / install those packages without creating >> this symlink? >> If I didn't miss something the symlinks are the only common files for >> both versions so it will be overwritten by the later installation or >> upgrade. Or not? > > This is an automated step to allow the python ports to be installed for > more than one python version at the same time. The scripts in > /usr/local/bin being one of the places that a conflict can happen. Docs > and licenses are other paths that can conflict, these other dir names > are altered to match the python version. eg share/licenses/py-pip will > get changed to share/licenses/py27-pip > > In the Makefile of the port USE_PYTHON=concurrent enables this feature, > if a port conflicts with multiple python versions then concurrent needs > to be added (or sometimes other adjustments). If you remove concurrent > then the symlinks in bin won't be made. > > I don't think there is a way to control this with environment variables > so you would have to alter the ports Makefile and build yourself if you > want it to work differently. > > The reason for the symlink is to allow the expected pip script to exist > in bin while preventing multiple python versions conflicting, the pkg > installed for the default version of python will own the bin/pip which > will symlink to it's install of bin/pip-${PYTHON_VER} - pkgs installed > for other versions of python will only install bin/pip-${PYTHON_VER} > > So if python 2.7 is the default version, py27-pip will install bin/pip > and bin/pip-2.7 while py34-pip will only install bin/pip-3.4 > If you run pip you will get the default py27 version but if you want to > run it for py34 then you need to specifically run pip-3.4 > > You can alter the default python version by adding to /etc/make.conf > > DEFAULT_VERSIONS= python=2.7 python2=2.7 python3=3.4 > > And if your wondering how to build multiple versions - > > cd /usr/ports/devel/py-pip > make PYTHON_VERSION=3.4 install clean Thank you for your detailed explanation. I will play with 'make PYTHON_VERSION=3.4 install clean' :) Miroslav Lachman
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56F15342.7050005>